LCOV - code coverage report
Current view: top level - lib - errname.c (source / functions) Hit Total Coverage
Test: coverage.info Lines: 0 8 0.0 %
Date: 2022-12-09 01:23:36 Functions: 0 1 0.0 %

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

Generated by: LCOV version 1.14