diff --git a/include/errno.h b/include/errno.h index 615ebc818a0a2..1be449988313d 100644 --- a/include/errno.h +++ b/include/errno.h @@ -29,6 +29,10 @@ #include +#if defined(CONFIG_BUILD_FLAT) || defined(__KERNEL__) +# include +#endif + /**************************************************************************** * Pre-processor Definitions ****************************************************************************/ @@ -41,12 +45,24 @@ */ #define errno *__errno() +#if defined(CONFIG_BUILD_FLAT) || defined(__KERNEL__) +#define set_errno(e) \ + do \ + { \ + if (!up_interrupt_context()) \ + { \ + errno = (int)(e); \ + } \ + } \ + while (0) +#else #define set_errno(e) \ do \ { \ errno = (int)(e); \ } \ while (0) +#endif #define get_errno() errno /* Definitions of error numbers and the string that would be