Page MenuHomeFreeBSD

D26974.id78819.diff
No OneTemporary

D26974.id78819.diff

Index: sys/compat/linux/linux.h
===================================================================
--- sys/compat/linux/linux.h
+++ sys/compat/linux/linux.h
@@ -197,5 +197,7 @@
#define BITMAP_1t1_LINUX(_name) BITMAP_EASY_LINUX(_name, LINUX_##_name)
int bsd_to_linux_errno(int error);
+int linux_to_bsd_errno(int error);
+void linux_check_errtbl(void);
#endif /* _LINUX_MI_H_ */
Index: sys/compat/linux/linux_common.c
===================================================================
--- sys/compat/linux/linux_common.c
+++ sys/compat/linux/linux_common.c
@@ -67,6 +67,9 @@
switch(type) {
case MOD_LOAD:
+#ifdef INVARIANTS
+ linux_check_errtbl();
+#endif
linux_dev_shm_create();
linux_osd_jail_register();
linux_exit_tag = EVENTHANDLER_REGISTER(process_exit,
Index: sys/compat/linux/linux_emul.h
===================================================================
--- sys/compat/linux/linux_emul.h
+++ sys/compat/linux/linux_emul.h
@@ -81,5 +81,6 @@
struct linux_pemuldata *pem_find(struct proc *);
extern const int linux_errtbl[];
+extern const int linux_to_bsd_errtbl[];
#endif /* !_LINUX_EMUL_H_ */
Index: sys/compat/linux/linux_errno.h
===================================================================
--- /dev/null
+++ sys/compat/linux/linux_errno.h
@@ -0,0 +1,186 @@
+/*-
+ * SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+ *
+ * Copyright (c) 2020 The FreeBSD Foundation
+ * All rights reserved.
+ *
+ * This software was developed by Edward Tomasz Napierala under sponsorship
+ * from the FreeBSD Foundation.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+#ifndef _LINUX_ERRNO_H_
+#define _LINUX_ERRNO_H_
+
+#define LINUX_EPERM 1
+#define LINUX_ENOENT 2
+#define LINUX_ESRCH 3
+#define LINUX_EINTR 4
+#define LINUX_EIO 5
+#define LINUX_ENXIO 6
+#define LINUX_E2BIG 7
+#define LINUX_ENOEXEC 8
+#define LINUX_EBADF 9
+
+#define LINUX_ECHILD 10
+#define LINUX_EAGAIN 11
+#define LINUX_ENOMEM 12
+#define LINUX_EACCES 13
+#define LINUX_EFAULT 14
+#define LINUX_ENOTBLK 15
+#define LINUX_EBUSY 16
+#define LINUX_EEXIST 17
+#define LINUX_EXDEV 18
+#define LINUX_ENODEV 19
+
+#define LINUX_ENOTDIR 20
+#define LINUX_EISDIR 21
+#define LINUX_EINVAL 22
+#define LINUX_ENFILE 23
+#define LINUX_EMFILE 24
+#define LINUX_ENOTTY 25
+#define LINUX_ETXTBSY 26
+#define LINUX_EFBIG 27
+#define LINUX_ENOSPC 28
+#define LINUX_ESPIPE 29
+
+#define LINUX_EROFS 30
+#define LINUX_EMLINK 31
+#define LINUX_EPIPE 32
+#define LINUX_EDOM 33
+#define LINUX_ERANGE 34
+#define LINUX_EDEADLK 35
+#define LINUX_ENAMETOOLONG 36
+#define LINUX_ENOLCK 37
+#define LINUX_ENOSYS 38
+#define LINUX_ENOTEMPTY 39
+
+#define LINUX_ELOOP 40
+#define LINUX_ESEEMSUNUSED 41 /* XXX */
+#define LINUX_ENOMSG 42
+#define LINUX_EIDRM 43
+#define LINUX_ECHRNG 44
+#define LINUX_EL2NSYNC 45
+#define LINUX_EL3HLT 46
+#define LINUX_EL3RST 47
+#define LINUX_ELNRNG 48
+#define LINUX_EUNATCH 49
+
+#define LINUX_ENOCSI 50
+#define LINUX_EL2HLT 51
+#define LINUX_EBADE 52
+#define LINUX_EBADR 53
+#define LINUX_EXFULL 54
+#define LINUX_ENOANO 55
+#define LINUX_EBADRQC 56
+#define LINUX_EBADSLT 57
+#define LINUX_EALSOUNUSED 58 /* XXX */
+#define LINUX_EBFONT 59
+
+#define LINUX_ENOSTR 60
+#define LINUX_ENODATA 61
+#define LINUX_ENOTIME 62
+#define LINUX_ENOSR 63
+#define LINUX_ENONET 64
+#define LINUX_ENOPKG 65
+#define LINUX_EREMOTE 66
+#define LINUX_ENOLINK 67
+#define LINUX_EADV 68
+#define LINUX_ESRMNT 69
+
+#define LINUX_ECOMM 70
+#define LINUX_EPROTO 71
+#define LINUX_EMULTIHOP 72
+#define LINUX_EDOTDOT 73
+#define LINUX_EBADMSG 74
+#define LINUX_EOVERFLOW 75
+#define LINUX_ENOTUNIQ 76
+#define LINUX_EBADFD 77
+#define LINUX_EREMCHG 78
+#define LINUX_ELIBACC 79
+
+#define LINUX_ELIBBAD 80
+#define LINUX_ELIBSCN 81
+#define LINUX_ELIBMAX 82
+#define LINUX_ELIBEXEC 83
+#define LINUX_EILSEQ 84
+#define LINUX_ERESTART 85
+#define LINUX_ESTRPIPE 86
+#define LINUX_EUSERS 87
+#define LINUX_ENOTSOCK 88
+#define LINUX_EDESTADDRREQ 89
+
+#define LINUX_EMSGSIZE 90
+#define LINUX_EPROTOTYPE 91
+#define LINUX_ENOPROTOOPT 92
+#define LINUX_EPROTONOTSUPPORT 93
+#define LINUX_ESOCKNOTSUPPORT 94
+#define LINUX_EOPNOTSUPPORT 95
+#define LINUX_EPFNOTSUPPORT 96
+#define LINUX_EAFNOTSUPPORT 97
+#define LINUX_EADDRINUSE 98
+#define LINUX_EADDRNOTAVAIL 99
+
+#define LINUX_ENETDOWN 100
+#define LINUX_ENETUNREACH 101
+#define LINUX_ENETRESET 102
+#define LINUX_ECONNABORTED 103
+#define LINUX_ECONNRESET 104
+#define LINUX_ENOBUFS 105
+#define LINUX_EISCONN 106
+#define LINUX_ENOTCONN 107
+#define LINUX_ESHUTDOWN 108
+#define LINUX_ETOOMANYREFS 109
+
+#define LINUX_ETIMEDOUT 110
+#define LINUX_ECONNREFUSED 111
+#define LINUX_EHOSTDOWN 112
+#define LINUX_EHOSTUNREACH 113
+#define LINUX_EALREADY 114
+#define LINUX_EINPROGRESS 115
+#define LINUX_ESTALE 116
+#define LINUX_EUCLEAN 117
+#define LINUX_ENOTNAM 118
+#define LINUX_ENAVAIL 119
+
+#define LINUX_EISNAM 120
+#define LINUX_EREMOTEIO 121
+#define LINUX_EDQUOT 122
+#define LINUX_ENOMEDIUM 123
+#define LINUX_EMEDIUMTYPE 124
+#define LINUX_ECANCELED 125
+#define LINUX_ENOKEY 126
+#define LINUX_EKEYEXPIRED 127
+#define LINUX_EKEYREVOKED 128
+#define LINUX_EKEYREJECTED 129
+
+#define LINUX_EOWNERDEAD 130
+#define LINUX_ENOTRECOVERABLE 131
+#define LINUX_ERFKILL 132
+#define LINUX_EHWPOISON 133
+
+#define LINUX_ELAST LINUX_EHWPOISON
+
+#endif /* _LINUX_ERRNO_H_ */
Index: sys/compat/linux/linux_errno.c
===================================================================
--- sys/compat/linux/linux_errno.c
+++ sys/compat/linux/linux_errno.c
@@ -8,6 +8,7 @@
#include <sys/systm.h>
#include <compat/linux/linux.h>
+#include <compat/linux/linux_errno.h>
#include <compat/linux/linux_errno.inc>
int
@@ -19,3 +20,32 @@
return (linux_errtbl[error]);
}
+
+int
+linux_to_bsd_errno(int error)
+{
+
+ KASSERT(error >= 0 && error <= ELAST,
+ ("%s: bad error %d", __func__, error));
+
+ return (linux_to_bsd_errtbl[error]);
+}
+
+#ifdef INVARIANTS
+void
+linux_check_errtbl(void)
+{
+ int i;
+
+ for (i = 1; i < sizeof(linux_errtbl); i++) {
+ KASSERT(linux_errtbl[i] != 0,
+ ("%s: linux_errtbl[%d] == 0", __func__, i));
+ }
+
+ for (i = 1; i < sizeof(linux_to_bsd_errtbl); i++) {
+ KASSERT(linux_to_bsd_errtbl[i] != 0,
+ ("%s: linux_to_bsd_errtbl[%d] == 0", __func__, i));
+ }
+
+}
+#endif
Index: sys/compat/linux/linux_errno.inc
===================================================================
--- sys/compat/linux/linux_errno.inc
+++ sys/compat/linux/linux_errno.inc
@@ -36,114 +36,291 @@
* include/uapi/asm-generic/errno.h
*/
const int linux_errtbl[ELAST + 1] = {
- -0,
- -1,
- -2,
- -3,
- -4,
- -5,
- -6,
- -7,
- -8,
- -9,
+ /* [0, 9] */
+ [0] = -0,
+ [EPERM] = -LINUX_EPERM,
+ [ENOENT] = -LINUX_ENOENT,
+ [ESRCH] = -LINUX_ESRCH,
+ [EINTR] = -LINUX_EINTR,
+ [EIO] = -LINUX_EIO,
+ [ENXIO] = -LINUX_ENXIO,
+ [E2BIG] = -LINUX_E2BIG,
+ [ENOEXEC] = -LINUX_ENOEXEC,
+ [EBADF] = -LINUX_EBADF,
- -10,
- -35, /* EDEADLK */
- -12,
- -13,
- -14,
- -15,
- -16,
- -17,
- -18,
- -19,
+ /* [10, 19] */
+ [ECHILD] = -LINUX_ECHILD,
+ [EDEADLK] = -LINUX_EDEADLK,
+ [ENOMEM] = -LINUX_ENOMEM,
+ [EACCES] = -LINUX_EACCES,
+ [EFAULT] = -LINUX_EFAULT,
+ [ENOTBLK] = -LINUX_ENOTBLK,
+ [EBUSY] = -LINUX_EBUSY,
+ [EEXIST] = -LINUX_EEXIST,
+ [EXDEV] = -LINUX_EXDEV,
+ [ENODEV] = -LINUX_ENODEV,
- -20,
- -21,
- -22,
- -23,
- -24,
- -25,
- -26,
- -27,
- -28,
- -29,
+ /* [20, 29] */
+ [ENOTDIR] = -LINUX_ENOTDIR,
+ [EISDIR] = -LINUX_EISDIR,
+ [EINVAL] = -LINUX_EINVAL,
+ [ENFILE] = -LINUX_ENFILE,
+ [EMFILE] = -LINUX_EMFILE,
+ [ENOTTY] = -LINUX_ENOTTY,
+ [ETXTBSY] = -LINUX_ETXTBSY,
+ [EFBIG] = -LINUX_EFBIG,
+ [ENOSPC] = -LINUX_ENOSPC,
+ [ESPIPE] = -LINUX_ESPIPE,
- -30,
- -31,
- -32,
- -33,
- -34,
- -11, /* EAGAIN */
- -115,
- -114,
- -88,
- -89,
+ /* [30, 39] */
+ [EROFS] = -LINUX_EROFS,
+ [EMLINK] = -LINUX_EMLINK,
+ [EPIPE] = -LINUX_EPIPE,
+ [EDOM] = -LINUX_EDOM,
+ [ERANGE] = -LINUX_ERANGE,
+ [EAGAIN] = -LINUX_EAGAIN,
+ [EINPROGRESS] = -LINUX_EINPROGRESS,
+ [EALREADY] = -LINUX_EALREADY,
+ [ENOTSOCK] = -LINUX_ENOTSOCK,
+ [EDESTADDRREQ] = -LINUX_EDESTADDRREQ,
- -90,
- -91,
- -92,
- -93,
- -94,
- -95,
- -96,
- -97,
- -98,
- -99,
+ /* [40, 49] */
+ [EMSGSIZE] = -LINUX_EMSGSIZE,
+ [EPROTOTYPE] = -LINUX_EPROTOTYPE,
+ [ENOPROTOOPT] = -LINUX_ENOPROTOOPT,
+ [EPROTONOSUPPORT] = -LINUX_EPROTONOTSUPPORT,
+ [ESOCKTNOSUPPORT] = -LINUX_ESOCKNOTSUPPORT,
+ [EOPNOTSUPP] = -LINUX_EOPNOTSUPPORT,
+ [EPFNOSUPPORT] = -LINUX_EPFNOTSUPPORT,
+ [EAFNOSUPPORT] = -LINUX_EAFNOTSUPPORT,
+ [EADDRINUSE] = -LINUX_EADDRINUSE,
+ [EADDRNOTAVAIL] = -LINUX_EADDRNOTAVAIL,
- -100,
- -101,
- -102,
- -103,
- -104,
- -105,
- -106,
- -107,
- -108,
- -109,
+ /* [50, 59] */
+ [ENETDOWN] = -LINUX_ENETDOWN,
+ [ENETUNREACH] = -LINUX_ENETUNREACH,
+ [ENETRESET] = -LINUX_ENETRESET,
+ [ECONNABORTED] = -LINUX_ECONNABORTED,
+ [ECONNRESET] = -LINUX_ECONNRESET,
+ [ENOBUFS] = -LINUX_ENOBUFS,
+ [EISCONN] = -LINUX_EISCONN,
+ [ENOTCONN] = -LINUX_ENOTCONN,
+ [ESHUTDOWN] = -LINUX_ESHUTDOWN,
+ [ETOOMANYREFS] = -LINUX_ETOOMANYREFS,
- -110,
- -111,
- -40,
- -36,
- -112,
- -113,
- -39,
- -11,
- -87,
- -122,
+ /* [60, 69] */
+ [ETIMEDOUT] = -LINUX_ETIMEDOUT,
+ [ECONNREFUSED] = -LINUX_ECONNREFUSED,
+ [ELOOP] = -LINUX_ELOOP,
+ [ENAMETOOLONG] = -LINUX_ENAMETOOLONG,
+ [EHOSTDOWN] = -LINUX_EHOSTDOWN,
+ [EHOSTUNREACH] = -LINUX_EHOSTUNREACH,
+ [ENOTEMPTY] = -LINUX_ENOTEMPTY,
+ [EPROCLIM] = -LINUX_EAGAIN, /* EPROCLIM -> EAGAIN, XXX */
+ [EUSERS] = -LINUX_EUSERS,
+ [EDQUOT] = -LINUX_EDQUOT,
- -116,
- -66,
- -6, /* EBADRPC -> ENXIO */
- -6, /* ERPCMISMATCH -> ENXIO */
- -6, /* EPROGUNAVAIL -> ENXIO */
- -6, /* EPROGMISMATCH -> ENXIO */
- -6, /* EPROCUNAVAIL -> ENXIO */
- -37,
- -38,
- -9,
+ /* [70, 79] */
+ [ESTALE] = -LINUX_ESTALE,
+ [EREMOTE] = -LINUX_EREMOTE,
+ [EBADRPC] = -LINUX_ENXIO, /* EBADRPC -> ENXIO */
+ [ERPCMISMATCH] = -LINUX_ENXIO, /* ERPCMISMATCH -> ENXIO */
+ [EPROGUNAVAIL] = -LINUX_ENXIO, /* EPROGUNAVAIL -> ENXIO */
+ [EPROGMISMATCH] = -LINUX_ENXIO, /* EPROGMISMATCH -> ENXIO */
+ [EPROCUNAVAIL] = -LINUX_ENXIO, /* EPROCUNAVAIL -> ENXIO */
+ [ENOLCK] = -LINUX_ENOLCK,
+ [ENOSYS] = -LINUX_ENOSYS,
+ [EFTYPE] = -LINUX_EBADF, /* EFTYPE -> EBADF */
- -6, /* EAUTH -> ENXIO */
- -6, /* ENEEDAUTH -> ENXIO */
- -43,
- -42,
- -75,
- -125,
- -84,
- -61,
- -22, /* EDOOFUS -> EINVAL */
- -74,
+ /* [80, 89] */
+ [EAUTH] = -LINUX_ENXIO, /* EAUTH -> ENXIO */
+ [ENEEDAUTH] = -LINUX_ENXIO, /* ENEEDAUTH -> ENXIO */
+ [EIDRM] = -LINUX_EIDRM,
+ [ENOMSG] = -LINUX_ENOMSG,
+ [EOVERFLOW] = -LINUX_EOVERFLOW,
+ [ECANCELED] = -LINUX_ECANCELED,
+ [EILSEQ] = -LINUX_EILSEQ,
+ [ENOATTR] = -LINUX_ENODATA, /* ENOATTR -> ENODATA */
+ [EDOOFUS] = -LINUX_EINVAL, /* EDOOFUS -> EINVAL */
+ [EBADMSG] = -LINUX_EBADMSG,
- -72,
- -67,
- -71,
- -1, /* ENOTCAPABLE -> EPERM */
- -1, /* ECAPMODE -> EPERM */
- -131, /* ENOTRECOVERABLE */
- -130, /* EOWNERDEAD */
- -22, /* EINTEGRITY -> EINVAL */
+ /* [90, 99] */
+ [EMULTIHOP] = -LINUX_EMULTIHOP,
+ [ENOLINK] = -LINUX_ENOLINK,
+ [EPROTO] = -LINUX_EPROTO,
+ [ENOTCAPABLE] = -LINUX_EPERM, /* ENOTCAPABLE -> EPERM */
+ [ECAPMODE] = -LINUX_EPERM, /* ECAPMODE -> EPERM */
+ [ENOTRECOVERABLE] = -LINUX_ENOTRECOVERABLE,
+ [EOWNERDEAD] = -LINUX_EOWNERDEAD,
+ [EINTEGRITY] = -LINUX_EINVAL, /* EINTEGRITY -> EINVAL */
};
_Static_assert(ELAST == 97,
"missing errno entries in linux_errtbl");
+
+const int linux_to_bsd_errtbl[LINUX_ELAST + 1] = {
+ /* [0, 9] */
+ [0] = -0,
+ [LINUX_EPERM] = EPERM,
+ [LINUX_ENOENT] = ENOENT,
+ [LINUX_ESRCH] = ESRCH,
+ [LINUX_EINTR] = EINTR,
+ [LINUX_EIO] = EIO,
+ [LINUX_ENXIO] = ENXIO,
+ [LINUX_E2BIG] = E2BIG,
+ [LINUX_ENOEXEC] = ENOENT,
+ [LINUX_EBADF] = EBADF,
+
+ /* [10, 19] */
+ [LINUX_ECHILD] = ECHILD,
+ [LINUX_EAGAIN] = EAGAIN,
+ [LINUX_ENOMEM] = ENOMEM,
+ [LINUX_EACCES] = EACCES,
+ [LINUX_EFAULT] = EFAULT,
+ [LINUX_ENOTBLK] = ENOTBLK,
+ [LINUX_EBUSY] = EBUSY,
+ [LINUX_EEXIST] = EEXIST,
+ [LINUX_EXDEV] = EXDEV,
+ [LINUX_ENODEV] = ENODEV,
+
+ /* [20, 29] */
+ [LINUX_ENOTDIR] = ENOTDIR,
+ [LINUX_EISDIR] = EISDIR,
+ [LINUX_EINVAL] = EINVAL,
+ [LINUX_ENFILE] = ENFILE,
+ [LINUX_EMFILE] = EMFILE,
+ [LINUX_ENOTTY] = ENOTTY,
+ [LINUX_ETXTBSY] = ETXTBSY,
+ [LINUX_EFBIG] = EFBIG,
+ [LINUX_ENOSPC] = ENOSPC,
+ [LINUX_ESPIPE] = ESPIPE,
+
+ /* [30, 39] */
+ [LINUX_EROFS] = EROFS,
+ [LINUX_EMLINK] = EMLINK,
+ [LINUX_EPIPE] = EPIPE,
+ [LINUX_EDOM] = EDOM,
+ [LINUX_ERANGE] = ERANGE,
+ [LINUX_EDEADLK] = EDEADLK,
+ [LINUX_ENAMETOOLONG] = ENAMETOOLONG,
+ [LINUX_ENOLCK] = ENOLCK,
+ [LINUX_ENOSYS] = ENOSYS,
+ [LINUX_ENOTEMPTY] = ENOTEMPTY,
+
+ /* [40, 49] */
+ [LINUX_ELOOP] = ELOOP,
+ [LINUX_ESEEMSUNUSED] = EINVAL, /* 41 -> EINVAL */
+ [LINUX_ENOMSG] = ENOMSG,
+ [LINUX_EIDRM] = EIDRM,
+ [LINUX_ECHRNG] = EINVAL, /* ECHRNG -> EINVAL */
+ [LINUX_EL2NSYNC] = EINVAL, /* EL2NSYNC -> EINVAL */
+ [LINUX_EL3HLT] = EINVAL, /* EL3HLT -> EINVAL */
+ [LINUX_EL3RST] = EINVAL, /* EL3RST -> EINVAL */
+ [LINUX_ELNRNG] = EINVAL, /* ELNRNG -> EINVAL */
+ [LINUX_EUNATCH] = EINVAL, /* EUNATCH -> EINVAL */
+
+ /* [50, 59] */
+ [LINUX_ENOCSI] = EINVAL, /* ENOCSI -> EINVAL */
+ [LINUX_EL2HLT] = EINVAL, /* EL2HLT -> EINVAL */
+ [LINUX_EBADE] = EINVAL, /* EBADE -> EINVAL */
+ [LINUX_EBADR] = EINVAL, /* EBADR -> EINVAL */
+ [LINUX_EXFULL] = EINVAL, /* EXFULL -> EINVAL */
+ [LINUX_ENOANO] = EINVAL, /* ENOANO -> EINVAL */
+ [LINUX_EBADRQC] = EINVAL, /* EBADRQC -> EINVAL */
+ [LINUX_EBADSLT] = EINVAL, /* EBADSLT -> EINVAL */
+ [LINUX_EALSOUNUSED] = EINVAL, /* 58 -> EINVAL */
+ [LINUX_EBFONT] = EINVAL, /* EBFONT -> EINVAL */
+
+ /* [60, 69] */
+ [LINUX_ENOSTR] = EINVAL, /* ENOSTR -> EINVAL */
+ [LINUX_ENODATA] = ENOATTR, /* ENODATA -> ENOATTR */
+ [LINUX_ENOTIME] = EINVAL, /* ENOTIME -> EINVAL */
+ [LINUX_ENOSR] = EINVAL, /* ENOSR -> EINVAL */
+ [LINUX_ENONET] = EINVAL, /* ENONET -> EINVAL */
+ [LINUX_ENOPKG] = EINVAL, /* ENOPKG -> EINVAL */
+ [LINUX_EREMOTE] = EREMOTE,
+ [LINUX_ENOLINK] = ENOLINK,
+ [LINUX_EADV] = EINVAL, /* EADV -> EINVAL */
+ [LINUX_ESRMNT] = EINVAL, /* ESRMNT -> EINVAL */
+
+ /* [70, 79] */
+ [LINUX_ECOMM] = EINVAL, /* ECOMM -> EINVAL */
+ [LINUX_EPROTO] = EPROTO,
+ [LINUX_EMULTIHOP] = EMULTIHOP,
+ [LINUX_EDOTDOT] = EINVAL, /* EDOTDOT -> EINVAL */
+ [LINUX_EBADMSG] = EBADMSG,
+ [LINUX_EOVERFLOW] = EOVERFLOW,
+ [LINUX_ENOTUNIQ] = EINVAL, /* ENOTUNIQ -> EINVAL */
+ [LINUX_EBADFD] = EBADF, /* EBADFD -> EBADF */
+ [LINUX_EREMCHG] = EINVAL, /* EREMCHG -> EINVAL */
+ [LINUX_ELIBACC] = EINVAL, /* ELIBACC -> EINVAL */
+
+ /* [80, 89] */
+ [LINUX_ELIBBAD] = EINVAL, /* ELIBBAD -> EINVAL */
+ [LINUX_ELIBSCN] = EINVAL, /* ELIBSCN -> EINVAL */
+ [LINUX_ELIBMAX] = EINVAL, /* ELIBMAX -> EINVAL */
+ [LINUX_ELIBEXEC] = EINVAL, /* ELIBEXEC -> EINVAL */
+ [LINUX_EILSEQ] = EILSEQ,
+ [LINUX_ERESTART] = EAGAIN, /* ERESTART -> EAGAIN */
+ [LINUX_ESTRPIPE] = EINVAL, /* ESTRPIPE -> EINVAL */
+ [LINUX_EUSERS] = EUSERS,
+ [LINUX_ENOTSOCK] = ENOTSOCK,
+ [LINUX_EDESTADDRREQ] = EDESTADDRREQ,
+
+ /* [90, 99] */
+ [LINUX_EMSGSIZE] = EMSGSIZE,
+ [LINUX_EPROTOTYPE] = EPROTOTYPE,
+ [LINUX_ENOPROTOOPT] = ENOPROTOOPT,
+ [LINUX_EPROTONOTSUPPORT] = EPROTONOSUPPORT,
+ [LINUX_ESOCKNOTSUPPORT] = EPROTONOSUPPORT, /* ESOCKNOTSUPPORT -> EPROTONOTSUPPORT */
+ [LINUX_EOPNOTSUPPORT] = EOPNOTSUPP,
+ [LINUX_EPFNOTSUPPORT] = EPFNOSUPPORT,
+ [LINUX_EAFNOTSUPPORT] = EAFNOSUPPORT,
+ [LINUX_EADDRINUSE] = EADDRINUSE,
+ [LINUX_EADDRNOTAVAIL] = EADDRNOTAVAIL,
+
+ /* [100, 109] */
+ [LINUX_ENETDOWN] = ENETDOWN,
+ [LINUX_ENETUNREACH] = ENETUNREACH,
+ [LINUX_ENETRESET] = ENETRESET,
+ [LINUX_ECONNABORTED] = ECONNABORTED,
+ [LINUX_ECONNRESET] = ECONNRESET,
+ [LINUX_ENOBUFS] = ENOBUFS,
+ [LINUX_EISCONN] = EISCONN,
+ [LINUX_ENOTCONN] = ENOTCONN,
+ [LINUX_ESHUTDOWN] = ESHUTDOWN,
+ [LINUX_ETOOMANYREFS] = ETOOMANYREFS,
+
+ /* [110, 119] */
+ [LINUX_ETIMEDOUT] = ETIMEDOUT,
+ [LINUX_ECONNREFUSED] = ECONNREFUSED,
+ [LINUX_EHOSTDOWN] = EHOSTDOWN,
+ [LINUX_EHOSTUNREACH] = EHOSTUNREACH,
+ [LINUX_EALREADY] = EALREADY,
+ [LINUX_EINPROGRESS] = EINPROGRESS,
+ [LINUX_ESTALE] = ESTALE,
+ [LINUX_EUCLEAN] = EINVAL, /* EUCLEAN -> EINVAL */
+ [LINUX_ENOTNAM] = EINVAL, /* ENOTNAM -> EINVAL */
+ [LINUX_ENAVAIL] = EINVAL, /* ENAVAIL -> EINVAL */
+
+ /* [120, 129] */
+ [LINUX_EISNAM] = EINVAL, /* EISNAM -> EINVAL */
+ [LINUX_EREMOTEIO] = EINVAL, /* EREMOTEIO -> EINVAL */
+ [LINUX_EDQUOT] = EDQUOT,
+ [LINUX_ENOMEDIUM] = EIO, /* ENOMEDIUM -> EIO */
+ [LINUX_EMEDIUMTYPE] = EIO, /* EMEDIUMTYPE -> EIO */
+ [LINUX_ECANCELED] = ECANCELED,
+ [LINUX_ENOKEY] = EIO, /* ENOKEY -> EIO */
+ [LINUX_EKEYEXPIRED] = EIO, /* EKEYEXPIRED -> EIO */
+ [LINUX_EKEYREVOKED] = EIO, /* EKEYREVOKED -> EIO */
+ [LINUX_EKEYREJECTED] = EIO, /* EKEYREJECTED -> EIO */
+
+ /* [130, 139] */
+ [LINUX_EOWNERDEAD] = EOWNERDEAD,
+ [LINUX_ENOTRECOVERABLE] = ENOTRECOVERABLE,
+ [LINUX_ERFKILL] = ENETDOWN, /* ERFKILL -> ENETDOWN */
+ [LINUX_EHWPOISON] = EINVAL, /* EHWPOISON -> EINVAL */
+};
+
+_Static_assert(LINUX_ELAST == LINUX_EHWPOISON,
+ "missing errno entries in linux_to_bsd_errtbl");

File Metadata

Mime Type
text/plain
Expires
Sat, Jan 17, 8:10 AM (21 h, 27 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
27685914
Default Alt Text
D26974.id78819.diff (17 KB)

Event Timeline