/* * Copyright (c) 2006-2024, RT-Thread Development Team * * SPDX-License-Identifier: Apache-2.0 * * Change Logs: * Date Author Notes * 2024-09-22 Meco Man the first version */ #ifndef __RT_KERRNO_H__ #define __RT_KERRNO_H__ #include #ifdef __cplusplus extern "C" { #endif #if defined(RT_USING_LIBC) && !defined(RT_USING_NANO) /* POSIX error code compatible */ #define RT_EOK 0 /**< There is no error */ #define RT_ERROR 255 /**< A generic/unknown error happens */ #define RT_ETIMEOUT ETIMEDOUT /**< Timed out */ #define RT_EFULL ENOSPC /**< The resource is full */ #define RT_EEMPTY ENODATA /**< The resource is empty */ #define RT_ENOMEM ENOMEM /**< No memory */ #define RT_ENOSYS ENOSYS /**< Function not implemented */ #define RT_EBUSY EBUSY /**< Busy */ #define RT_EIO EIO /**< IO error */ #define RT_EINTR EINTR /**< Interrupted system call */ #define RT_EINVAL EINVAL /**< Invalid argument */ #define RT_ENOENT ENOENT /**< No entry */ #define RT_ENOSPC ENOSPC /**< No space left */ #define RT_EPERM EPERM /**< Operation not permitted */ #define RT_EFAULT EFAULT /**< Bad address */ #define RT_ENOBUFS ENOBUFS /**< No buffer space is available */ #define RT_ESCHEDISR 253 /**< scheduler failure in isr context */ #define RT_ESCHEDLOCKED 252 /**< scheduler failure in critical region */ #define RT_ETRAP 254 /**< Trap event */ #else #define RT_EOK 0 /**< There is no error */ #define RT_ERROR 1 /**< A generic/unknown error happens */ #define RT_ETIMEOUT 2 /**< Timed out */ #define RT_EFULL 3 /**< The resource is full */ #define RT_EEMPTY 4 /**< The resource is empty */ #define RT_ENOMEM 5 /**< No memory */ #define RT_ENOSYS 6 /**< Function not implemented */ #define RT_EBUSY 7 /**< Busy */ #define RT_EIO 8 /**< IO error */ #define RT_EINTR 9 /**< Interrupted system call */ #define RT_EINVAL 10 /**< Invalid argument */ #define RT_ENOENT 11 /**< No entry */ #define RT_ENOSPC 12 /**< No space left */ #define RT_EPERM 13 /**< Operation not permitted */ #define RT_ETRAP 14 /**< Trap event */ #define RT_EFAULT 15 /**< Bad address */ #define RT_ENOBUFS 16 /**< No buffer space is available */ #define RT_ESCHEDISR 17 /**< scheduler failure in isr context */ #define RT_ESCHEDLOCKED 18 /**< scheduler failure in critical region */ #endif /* defined(RT_USING_LIBC) && !defined(RT_USING_NANO) */ rt_err_t rt_get_errno(void); void rt_set_errno(rt_err_t no); int *_rt_errno(void); const char *rt_strerror(rt_err_t error); #if !defined(RT_USING_NEWLIBC) && !defined(_WIN32) #ifndef errno #define errno *_rt_errno() #endif #endif /* !defined(RT_USING_NEWLIBC) && !defined(_WIN32) */ #ifdef __cplusplus } #endif #endif