VisionFive2 Linux kernel

StarFive Tech Linux Kernel for VisionFive (JH7110) boards (mirror)

More than 9999 Commits   32 Branches   54 Tags
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200   1) // SPDX-License-Identifier: GPL-2.0
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200   2) #include <linux/build_bug.h>
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200   3) #include <linux/errno.h>
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200   4) #include <linux/errname.h>
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200   5) #include <linux/kernel.h>
aa6159ab99a9a (Andy Shevchenko  2020-12-15 20:42:48 -0800   6) #include <linux/math.h>
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200   7) 
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200   8) /*
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200   9)  * Ensure these tables do not accidentally become gigantic if some
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200  10)  * huge errno makes it in. On most architectures, the first table will
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200  11)  * only have about 140 entries, but mips and parisc have more sparsely
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200  12)  * allocated errnos (with EHWPOISON = 257 on parisc, and EDQUOT = 1133
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200  13)  * on mips), so this wastes a bit of space on those - though we
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200  14)  * special case the EDQUOT case.
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200  15)  */
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200  16) #define E(err) [err + BUILD_BUG_ON_ZERO(err <= 0 || err > 300)] = "-" #err
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200  17) static const char *names_0[] = {
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200  18) 	E(E2BIG),
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200  19) 	E(EACCES),
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200  20) 	E(EADDRINUSE),
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200  21) 	E(EADDRNOTAVAIL),
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200  22) 	E(EADV),
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200  23) 	E(EAFNOSUPPORT),
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200  24) 	E(EALREADY),
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200  25) 	E(EBADE),
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200  26) 	E(EBADF),
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200  27) 	E(EBADFD),
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200  28) 	E(EBADMSG),
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200  29) 	E(EBADR),
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200  30) 	E(EBADRQC),
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200  31) 	E(EBADSLT),
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200  32) 	E(EBFONT),
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200  33) 	E(EBUSY),
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200  34) #ifdef ECANCELLED
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200  35) 	E(ECANCELLED),
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200  36) #endif
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200  37) 	E(ECHILD),
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200  38) 	E(ECHRNG),
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200  39) 	E(ECOMM),
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200  40) 	E(ECONNABORTED),
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200  41) 	E(ECONNRESET),
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200  42) 	E(EDEADLOCK),
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200  43) 	E(EDESTADDRREQ),
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200  44) 	E(EDOM),
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200  45) 	E(EDOTDOT),
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200  46) #ifndef CONFIG_MIPS
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200  47) 	E(EDQUOT),
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200  48) #endif
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200  49) 	E(EEXIST),
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200  50) 	E(EFAULT),
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200  51) 	E(EFBIG),
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200  52) 	E(EHOSTDOWN),
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200  53) 	E(EHOSTUNREACH),
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200  54) 	E(EHWPOISON),
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200  55) 	E(EIDRM),
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200  56) 	E(EILSEQ),
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200  57) #ifdef EINIT
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200  58) 	E(EINIT),
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200  59) #endif
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200  60) 	E(EINPROGRESS),
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200  61) 	E(EINTR),
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200  62) 	E(EINVAL),
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200  63) 	E(EIO),
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200  64) 	E(EISCONN),
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200  65) 	E(EISDIR),
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200  66) 	E(EISNAM),
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200  67) 	E(EKEYEXPIRED),
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200  68) 	E(EKEYREJECTED),
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200  69) 	E(EKEYREVOKED),
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200  70) 	E(EL2HLT),
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200  71) 	E(EL2NSYNC),
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200  72) 	E(EL3HLT),
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200  73) 	E(EL3RST),
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200  74) 	E(ELIBACC),
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200  75) 	E(ELIBBAD),
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200  76) 	E(ELIBEXEC),
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200  77) 	E(ELIBMAX),
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200  78) 	E(ELIBSCN),
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200  79) 	E(ELNRNG),
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200  80) 	E(ELOOP),
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200  81) 	E(EMEDIUMTYPE),
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200  82) 	E(EMFILE),
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200  83) 	E(EMLINK),
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200  84) 	E(EMSGSIZE),
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200  85) 	E(EMULTIHOP),
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200  86) 	E(ENAMETOOLONG),
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200  87) 	E(ENAVAIL),
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200  88) 	E(ENETDOWN),
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200  89) 	E(ENETRESET),
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200  90) 	E(ENETUNREACH),
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200  91) 	E(ENFILE),
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200  92) 	E(ENOANO),
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200  93) 	E(ENOBUFS),
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200  94) 	E(ENOCSI),
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200  95) 	E(ENODATA),
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200  96) 	E(ENODEV),
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200  97) 	E(ENOENT),
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200  98) 	E(ENOEXEC),
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200  99) 	E(ENOKEY),
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200 100) 	E(ENOLCK),
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200 101) 	E(ENOLINK),
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200 102) 	E(ENOMEDIUM),
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200 103) 	E(ENOMEM),
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200 104) 	E(ENOMSG),
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200 105) 	E(ENONET),
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200 106) 	E(ENOPKG),
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200 107) 	E(ENOPROTOOPT),
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200 108) 	E(ENOSPC),
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200 109) 	E(ENOSR),
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200 110) 	E(ENOSTR),
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200 111) #ifdef ENOSYM
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200 112) 	E(ENOSYM),
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200 113) #endif
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200 114) 	E(ENOSYS),
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200 115) 	E(ENOTBLK),
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200 116) 	E(ENOTCONN),
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200 117) 	E(ENOTDIR),
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200 118) 	E(ENOTEMPTY),
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200 119) 	E(ENOTNAM),
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200 120) 	E(ENOTRECOVERABLE),
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200 121) 	E(ENOTSOCK),
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200 122) 	E(ENOTTY),
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200 123) 	E(ENOTUNIQ),
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200 124) 	E(ENXIO),
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200 125) 	E(EOPNOTSUPP),
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200 126) 	E(EOVERFLOW),
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200 127) 	E(EOWNERDEAD),
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200 128) 	E(EPERM),
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200 129) 	E(EPFNOSUPPORT),
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200 130) 	E(EPIPE),
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200 131) #ifdef EPROCLIM
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200 132) 	E(EPROCLIM),
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200 133) #endif
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200 134) 	E(EPROTO),
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200 135) 	E(EPROTONOSUPPORT),
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200 136) 	E(EPROTOTYPE),
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200 137) 	E(ERANGE),
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200 138) 	E(EREMCHG),
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200 139) #ifdef EREMDEV
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200 140) 	E(EREMDEV),
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200 141) #endif
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200 142) 	E(EREMOTE),
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200 143) 	E(EREMOTEIO),
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200 144) #ifdef EREMOTERELEASE
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200 145) 	E(EREMOTERELEASE),
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200 146) #endif
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200 147) 	E(ERESTART),
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200 148) 	E(ERFKILL),
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200 149) 	E(EROFS),
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200 150) #ifdef ERREMOTE
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200 151) 	E(ERREMOTE),
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200 152) #endif
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200 153) 	E(ESHUTDOWN),
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200 154) 	E(ESOCKTNOSUPPORT),
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200 155) 	E(ESPIPE),
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200 156) 	E(ESRCH),
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200 157) 	E(ESRMNT),
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200 158) 	E(ESTALE),
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200 159) 	E(ESTRPIPE),
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200 160) 	E(ETIME),
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200 161) 	E(ETIMEDOUT),
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200 162) 	E(ETOOMANYREFS),
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200 163) 	E(ETXTBSY),
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200 164) 	E(EUCLEAN),
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200 165) 	E(EUNATCH),
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200 166) 	E(EUSERS),
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200 167) 	E(EXDEV),
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200 168) 	E(EXFULL),
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200 169) 
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200 170) 	E(ECANCELED), /* ECANCELLED */
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200 171) 	E(EAGAIN), /* EWOULDBLOCK */
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200 172) 	E(ECONNREFUSED), /* EREFUSED */
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200 173) 	E(EDEADLK), /* EDEADLOCK */
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200 174) };
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200 175) #undef E
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200 176) 
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200 177) #define E(err) [err - 512 + BUILD_BUG_ON_ZERO(err < 512 || err > 550)] = "-" #err
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200 178) static const char *names_512[] = {
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200 179) 	E(ERESTARTSYS),
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200 180) 	E(ERESTARTNOINTR),
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200 181) 	E(ERESTARTNOHAND),
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200 182) 	E(ENOIOCTLCMD),
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200 183) 	E(ERESTART_RESTARTBLOCK),
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200 184) 	E(EPROBE_DEFER),
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200 185) 	E(EOPENSTALE),
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200 186) 	E(ENOPARAM),
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200 187) 
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200 188) 	E(EBADHANDLE),
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200 189) 	E(ENOTSYNC),
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200 190) 	E(EBADCOOKIE),
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200 191) 	E(ENOTSUPP),
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200 192) 	E(ETOOSMALL),
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200 193) 	E(ESERVERFAULT),
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200 194) 	E(EBADTYPE),
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200 195) 	E(EJUKEBOX),
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200 196) 	E(EIOCBQUEUED),
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200 197) 	E(ERECALLCONFLICT),
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200 198) };
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200 199) #undef E
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200 200) 
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200 201) static const char *__errname(unsigned err)
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200 202) {
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200 203) 	if (err < ARRAY_SIZE(names_0))
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200 204) 		return names_0[err];
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200 205) 	if (err >= 512 && err - 512 < ARRAY_SIZE(names_512))
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200 206) 		return names_512[err - 512];
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200 207) 	/* But why? */
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200 208) 	if (IS_ENABLED(CONFIG_MIPS) && err == EDQUOT) /* 1133 */
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200 209) 		return "-EDQUOT";
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200 210) 	return NULL;
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200 211) }
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200 212) 
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200 213) /*
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200 214)  * errname(EIO) -> "EIO"
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200 215)  * errname(-EIO) -> "-EIO"
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200 216)  */
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200 217) const char *errname(int err)
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200 218) {
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200 219) 	const char *name = __errname(abs(err));
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200 220) 	if (!name)
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200 221) 		return NULL;
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200 222) 
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200 223) 	return err > 0 ? name + 1 : name;
57f5677e535ba (Rasmus Villemoes 2019-10-15 21:07:05 +0200 224) }