~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/lib/errname.c

Version: ~ [ linux-5.9-rc5 ] ~ [ linux-5.8.10 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.66 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.146 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.198 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.236 ] ~ [ linux-4.8.17 ] ~ [ linux-4.7.10 ] ~ [ linux-4.6.7 ] ~ [ linux-4.5.7 ] ~ [ linux-4.4.236 ] ~ [ linux-4.3.6 ] ~ [ linux-4.2.8 ] ~ [ linux-4.1.52 ] ~ [ linux-4.0.9 ] ~ [ linux-3.19.8 ] ~ [ linux-3.18.140 ] ~ [ linux-3.17.8 ] ~ [ linux-3.16.85 ] ~ [ linux-3.15.10 ] ~ [ linux-3.14.79 ] ~ [ linux-3.13.11 ] ~ [ linux-3.12.74 ] ~ [ linux-3.11.10 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.5 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

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

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | Wiki (Japanese) | Wiki (English) | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

osdn.jp