e08ca78f40
This change is made for two reasons: 1. A 3rd-party library (eg berkeley-db-1.xx, axtls) may use the system provided errno for certain errors, and yet MicroPython stream objects that it calls will be using the internal mp_stream_errno. So if the library returns an error it is not known whether the corresponding errno code is stored in the system errno or mp_stream_errno. Using the system errno in all cases (eg in the mp_stream_posix_XXX wrappers) fixes this ambiguity. 2. For systems that have threading the system-provided errno should always be used because the errno value is thread-local. For systems that do not have an errno, the new lib/embed/__errno.c file is provided.
14 lines
289 B
C
14 lines
289 B
C
// This file provides a version of __errno() for embedded systems that do not have one.
|
|
// This function is needed for expressions of the form: &errno
|
|
|
|
static int embed_errno;
|
|
|
|
#if defined(__linux__)
|
|
int *__errno_location(void)
|
|
#else
|
|
int *__errno(void)
|
|
#endif
|
|
{
|
|
return &embed_errno;
|
|
}
|