1//===----------------------- config_elast.h -------------------------------===//
2//
3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4// See https://llvm.org/LICENSE.txt for license information.
5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6//
7//===----------------------------------------------------------------------===//
8
9#ifndef _LIBCPP_CONFIG_ELAST
10#define _LIBCPP_CONFIG_ELAST
11
12#include <__config>
13
14#if defined(_LIBCPP_MSVCRT_LIKE)
15#include <stdlib.h>
16#else
17#include <errno.h>
18#endif
19
20#if defined(ELAST)
21#define _LIBCPP_ELAST ELAST
22#elif defined(_NEWLIB_VERSION)
23#define _LIBCPP_ELAST __ELASTERROR
24#elif defined(__Fuchsia__)
25// No _LIBCPP_ELAST needed on Fuchsia
26#elif defined(__wasi__)
27// No _LIBCPP_ELAST needed on WASI
28#elif defined(__linux__) || defined(_LIBCPP_HAS_MUSL_LIBC)
29#define _LIBCPP_ELAST 4095
30#elif defined(__APPLE__)
31// No _LIBCPP_ELAST needed on Apple
32#elif defined(__sun__)
33#define _LIBCPP_ELAST ESTALE
34#elif defined(_LIBCPP_MSVCRT_LIKE)
35#define _LIBCPP_ELAST (_sys_nerr - 1)
36#else
37// Warn here so that the person doing the libcxx port has an easier time:
38#warning ELAST for this platform not yet implemented
39#endif
40
41#endif // _LIBCPP_CONFIG_ELAST
42