diff options
Diffstat (limited to 'include/iprt/errno.h')
-rw-r--r-- | include/iprt/errno.h | 441 |
1 files changed, 441 insertions, 0 deletions
diff --git a/include/iprt/errno.h b/include/iprt/errno.h new file mode 100644 index 00000000..fd4c77f0 --- /dev/null +++ b/include/iprt/errno.h @@ -0,0 +1,441 @@ +/** @file + * IPRT - errno.h wrapper. + */ + +/* + * Copyright (C) 2012-2023 Oracle and/or its affiliates. + * + * This file is part of VirtualBox base platform packages, as + * available from https://www.virtualbox.org. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation, in version 3 of the + * License. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, see <https://www.gnu.org/licenses>. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL), a copy of it is provided in the "COPYING.CDDL" file included + * in the VirtualBox distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + * + * SPDX-License-Identifier: GPL-3.0-only OR CDDL-1.0 + */ + +#ifndef IPRT_INCLUDED_errno_h +#define IPRT_INCLUDED_errno_h +#ifndef RT_WITHOUT_PRAGMA_ONCE +# pragma once +#endif + +#ifndef IPRT_NO_CRT +# if defined(RT_OS_DARWIN) && defined(KERNEL) +# include <sys/errno.h> +# elif defined(RT_OS_LINUX) && defined(__KERNEL__) +# include <linux/errno.h> +# elif defined(RT_OS_FREEBSD) && defined(_KERNEL) +# include <sys/errno.h> +# elif defined(RT_OS_NETBSD) && defined(_KERNEL) +# include <sys/errno.h> +# else +# include <errno.h> +# endif +#endif + + +/* + * Supply missing errno values according to the current RT_OS_XXX definition. + * + * Note! These supplements are for making no-CRT mode, as well as making UNIXy + * code that makes used of odd errno defines internally, work smoothly. + * + * When adding more error codes, always check the following errno.h sources: + * - RT_OS_DARWIN: http://fxr.watson.org/fxr/source/bsd/sys/errno.h?v=xnu-1699.24.8 + * - RT_OS_FREEBSD: http://fxr.watson.org/fxr/source/sys/errno.h?v=DFBSD + * - RT_OS_NETBSD: http://fxr.watson.org/fxr/source/sys/errno.h?v=NETBSD + * - RT_OS_OPENBSD: http://fxr.watson.org/fxr/source/sys/errno.h?v=OPENBSD + * - RT_OS_OS2: http://svn.netlabs.org/libc/browser/trunk/libc/include/sys/errno.h + * - RT_OS_LINUX: http://fxr.watson.org/fxr/source/include/asm-generic/errno.h?v=linux-2.6 + * - RT_OS_SOLARIS: http://fxr.watson.org/fxr/source/common/sys/errno.h?v=OPENSOLARIS + * - RT_OS_WINDOWS: tools/win.x86/vcc/v8sp1/include/errno.h + */ + +#if defined(RT_OS_DARWIN) \ + || defined(RT_OS_FREEBSD) \ + || defined(RT_OS_NETBSD) \ + || defined(RT_OS_OPENBSD) \ + || defined(RT_OS_OS2) +# define RT_ERRNO_OS_BSD +#endif +#ifdef RT_OS_SOLARIS +# define RT_ERRNO_OS_SYSV_HARDCORE /* ?? */ +#endif + +/* The relatively similar part. */ +#ifndef EPERM +# define EPERM (1) +#endif +#ifndef ENOENT +# define ENOENT (2) +#endif +#ifndef ESRCH +# define ESRCH (3) +#endif +#ifndef EINTR +# define EINTR (4) +#endif +#ifndef EIO +# define EIO (5) +#endif +#ifndef ENXIO +# define ENXIO (6) +#endif +#ifndef E2BIG +# define E2BIG (7) +#endif +#ifndef ENOEXEC +# define ENOEXEC (8) +#endif +#ifndef EBADF +# define EBADF (9) +#endif +#ifndef ECHILD +# define ECHILD (10) +#endif +#ifndef EAGAIN +# if defined(RT_ERRNO_OS_BSD) +# define EAGAIN (35) +# else +# define EAGAIN (11) +# endif +#endif +#ifndef EWOULDBLOCK +# define EWOULDBLOCK EAGAIN +#endif +#ifndef EDEADLK +# if defined(RT_ERRNO_OS_BSD) +# define EDEADLK (11) +# elif defined(RT_OS_LINUX) +# define EDEADLK (35) +# elif defined(RT_OS_WINDOWS) +# define EDEADLK (36) +# else +# define EDEADLK (45) /* solaris */ +# endif +#endif +#ifndef EDEADLOCK +# define EDEADLOCK EDEADLK +#endif +#ifndef ENOMEM +# define ENOMEM (12) +#endif +#ifndef EACCES +# define EACCES (13) +#endif +#ifndef EFAULT +# define EFAULT (14) +#endif +#ifndef ENOTBLK +# define ENOTBLK (15) +#endif +#ifndef EBUSY +# define EBUSY (16) +#endif +#ifndef EEXIST +# define EEXIST (17) +#endif +#ifndef EXDEV +# define EXDEV (18) +#endif +#ifndef ENODEV +# define ENODEV (19) +#endif +#ifndef ENOTDIR +# define ENOTDIR (20) +#endif +#ifndef EISDIR +# define EISDIR (21) +#endif +#ifndef EINVAL +# define EINVAL (22) +#endif +#ifndef ENFILE +# define ENFILE (23) +#endif +#ifndef EMFILE +# define EMFILE (24) +#endif +#ifndef ENOTTY +# define ENOTTY (25) +#endif +#ifndef ETXTBSY +# define ETXTBSY (26) +#endif +#ifndef EFBIG +# define EFBIG (27) +#endif +#ifndef ENOSPC +# define ENOSPC (28) +#endif +#ifndef ESPIPE +# define ESPIPE (29) +#endif +#ifndef EROFS +# define EROFS (30) +#endif +#ifndef EMLINK +# define EMLINK (31) +#endif +#ifndef EPIPE +# define EPIPE (32) +#endif +#ifndef EDOM +# define EDOM (33) +#endif +#ifndef ERANGE +# define ERANGE (34) +#endif + +/* 35 - also EAGAIN on BSD and EDEADLK on Linux. */ +#ifndef ENOMSG +# if defined(RT_OS_DARWIN) +# define ENOMSG (91) +# elif defined(RT_OS_FREEBSD) +# define ENOMSG (83) +# elif defined(RT_OS_LINUX) +# define ENOMSG (42) +# elif defined(RT_OS_WINDOWS) +# define ENOMSG (122) +# else +# define ENOMSG (35) +# endif +#endif + +/* 36 - Also EDEADLK on Windows. */ +#ifndef EIDRM +# if defined(RT_OS_DARWIN) +# define EIDRM (90) +# elif defined(RT_OS_FREEBSD) || defined(RT_OS_NETBSD) +# define EIDRM (82) +# elif defined(RT_OS_OPENBSD) +# define EIDRM (89) +# elif defined(RT_OS_LINUX) +# define EIDRM (43) +# elif defined(RT_OS_WINDOWS) +# define EIDRM (111) +# else +# define EIDRM (36) +# endif +#endif +#ifndef EINPROGRESS +# if defined(RT_ERRNO_OS_BSD) +# define EINPROGRESS (36) +# elif defined(RT_OS_LINUX) +# define EINPROGRESS (115) +# elif defined(RT_OS_WINDOWS) +# define EINPROGRESS (112) +# else +# define EINPROGRESS (150) /* solaris */ +# endif +#endif +#ifndef ENAMETOOLONG +# if defined(RT_ERRNO_OS_BSD) +# define ENAMETOOLONG (63) +# elif defined(RT_OS_LINUX) +# define ENAMETOOLONG (36) +# elif defined(RT_OS_WINDOWS) +# define ENAMETOOLONG (38) +# else +# define ENAMETOOLONG (78) /* solaris */ +# endif +#endif + +/* 37 */ +#ifndef ECHRNG +# if defined(RT_ERRNO_OS_SYSV_HARDCORE) +# define ECHRNG (37) +# else +# define ECHRNG (599) +# endif +#endif +#ifndef ENOLCK +# if defined(RT_ERRNO_OS_BSD) +# define ENOLCK (77) +# elif defined(RT_OS_LINUX) +# define ENOLCK (37) +# elif defined(RT_OS_WINDOWS) +# define ENOLCK (39) +# else +# define ENOLCK (46) +# endif +#endif +#ifndef EALREADY +# if defined(RT_ERRNO_OS_BSD) +# define EALREADY (37) +# elif defined(RT_OS_LINUX) +# define EALREADY (114) +# elif defined(RT_OS_WINDOWS) +# define EALREADY (103) +# else +# define EALREADY (149) +# endif +#endif + +/* 38 - Also ENAMETOOLONG on Windows. */ +#ifndef ENOSYS +# if defined(RT_ERRNO_OS_BSD) +# define ENOSYS (78) +# elif defined(RT_OS_LINUX) +# define ENOSYS (38) +# elif defined(RT_OS_WINDOWS) +# define ENOSYS (40) +# else +# define ENOSYS (89) /* solaris */ +# endif +#endif +#ifndef ENOTSOCK +# if defined(RT_ERRNO_OS_BSD) +# define ENOTSOCK (38) +# elif defined(RT_OS_LINUX) +# define ENOTSOCK (88) +# elif defined(RT_OS_WINDOWS) +# define ENOTSOCK (128) +# else +# define ENOTSOCK (95) /* solaris */ +# endif +#endif +#ifndef EL2NSYNC +# if defined(RT_OS_LINUX) +# define EL2NSYNC (45) +# elif defined(RT_ERRNO_OS_SYSV_HARDCORE) +# define EL2NSYNC (38) /* solaris */ +# endif +#endif + +/* 39 - Also ENOLCK on Windows. */ +#ifndef ENOTEMPTY +# if defined(RT_ERRNO_OS_BSD) +# define ENOTEMPTY (66) +# elif defined(RT_OS_LINUX) +# define ENOTEMPTY (39) +# elif defined(RT_OS_WINDOWS) +# define ENOTEMPTY (41) +# else +# define ENOTEMPTY (93) /* solaris */ +# endif +#endif +#ifndef EDESTADDRREQ +# if defined(RT_ERRNO_OS_BSD) +# define EDESTADDRREQ (39) +# elif defined(RT_OS_LINUX) +# define EDESTADDRREQ (89) +# elif defined(RT_OS_WINDOWS) +# define EDESTADDRREQ (109) +# else +# define EDESTADDRREQ (96) /* solaris */ +# endif +#endif +#ifndef EL3HLT +# if defined(RT_OS_LINUX) +# define EL3HLT (46) +# elif defined(RT_ERRNO_OS_SYSV_HARDCORE) +# define EL3HLT (39) /* solaris */ +# endif +#endif + +/* 40 - Also ENOSYS on Windows. */ +#ifndef ELOOP +# if defined(RT_ERRNO_OS_BSD) +# define ELOOP (62) +# elif defined(RT_OS_LINUX) +# define ELOOP (40) +# elif defined(RT_OS_WINDOWS) +# define ELOOP (114) +# else +# define ELOOP (90) /* solaris */ +# endif +#endif +#ifndef EMSGSIZE +# if defined(RT_ERRNO_OS_BSD) +# define EMSGSIZE (40) +# elif defined(RT_OS_LINUX) +# define EMSGSIZE (90) +# elif defined(RT_OS_WINDOWS) +# define EMSGSIZE (115) +# else +# define EMSGSIZE (97) /* solaris */ +# endif +#endif +#ifndef EL3RST +# if defined(RT_OS_LINUX) +# define EL3RST (47) +# elif defined(RT_ERRNO_OS_SYSV_HARDCORE) +# define EL3RST (40) /* solaris */ +# endif +#endif + +/** @todo errno constants {41..44}. */ + +/* 45 - also EDEADLK on Solaris, EL2NSYNC on Linux. */ +#ifndef ENOTSUP +# if defined(RT_ERRNO_OS_BSD) +# define ENOTSUP (45) +# elif defined(RT_OS_LINUX) +# define ENOTSUP (95) +# elif defined(RT_OS_WINDOWS) +# define ENOTSUP (129) +# else +# define ENOTSUP (48) +# endif +#endif +#ifndef EOPNOTSUPP +# if defined(RT_ERRNO_OS_BSD) +# define EOPNOTSUPP ENOTSUP +# elif defined(RT_OS_LINUX) +# define EOPNOTSUPP ENOTSUP +# elif defined(RT_OS_WINDOWS) +# define EOPNOTSUPP (130) +# else +# define EOPNOTSUPP (122) +# endif +#endif + +/** @todo errno constants {46..74}. */ + +/* 75 - note that Solaris has constant with value 75. */ +#ifndef EOVERFLOW +# if defined(RT_OS_OPENBSD) +# define EOVERFLOW (87) +# elif defined(RT_ERRNO_OS_BSD) +# define EOVERFLOW (84) +# elif defined(RT_OS_LINUX) +# define EOVERFLOW (75) +# elif defined(RT_OS_WINDOWS) +# define EOVERFLOW (132) +# else +# define EOVERFLOW (79) +# endif +#endif +#ifndef EPROGMISMATCH +# if defined(RT_ERRNO_OS_BSD) +# define EPROGMISMATCH (75) +# else +# define EPROGMISMATCH (598) +# endif +#endif + +/** @todo errno constants {76..}. */ + + +#endif /* !IPRT_INCLUDED_errno_h */ |