1#![allow(dead_code)]
4
5crate::macros::def_errno!();
8
9impl Errno {
10 pub const EPERM: Self = Self(1);
12 pub const ENOENT: Self = Self(2);
14 pub const ESRCH: Self = Self(3);
16 pub const EINTR: Self = Self(4);
18 pub const EIO: Self = Self(5);
20 pub const ENXIO: Self = Self(6);
22 pub const E2BIG: Self = Self(7);
24 pub const ENOEXEC: Self = Self(8);
26 pub const EBADF: Self = Self(9);
28 pub const ECHILD: Self = Self(10);
30 pub const EDEADLK: Self = Self(11);
32 pub const ENOMEM: Self = Self(12);
34 pub const EACCES: Self = Self(13);
36 pub const EFAULT: Self = Self(14);
38 pub const ENOTBLK: Self = Self(15);
40 pub const EBUSY: Self = Self(16);
42 pub const EEXIST: Self = Self(17);
44 pub const EXDEV: Self = Self(18);
46 pub const ENODEV: Self = Self(19);
48 pub const ENOTDIR: Self = Self(20);
50 pub const EISDIR: Self = Self(21);
52 pub const EINVAL: Self = Self(22);
54 pub const ENFILE: Self = Self(23);
56 pub const EMFILE: Self = Self(24);
58 pub const ENOTTY: Self = Self(25);
60 pub const ETXTBSY: Self = Self(26);
62 pub const EFBIG: Self = Self(27);
64 pub const ENOSPC: Self = Self(28);
66 pub const ESPIPE: Self = Self(29);
68 pub const EROFS: Self = Self(30);
70 pub const EMLINK: Self = Self(31);
72 pub const EPIPE: Self = Self(32);
74 pub const EDOM: Self = Self(33);
76 pub const ERANGE: Self = Self(34);
78 pub const EAGAIN: Self = Self(35);
80 pub const EINPROGRESS: Self = Self(36);
82 pub const EALREADY: Self = Self(37);
84 pub const ENOTSOCK: Self = Self(38);
86 pub const EDESTADDRREQ: Self = Self(39);
88 pub const EMSGSIZE: Self = Self(40);
90 pub const EPROTOTYPE: Self = Self(41);
92 pub const ENOPROTOOPT: Self = Self(42);
94 pub const EPROTONOSUPPORT: Self = Self(43);
96 pub const ESOCKTNOSUPPORT: Self = Self(44);
98 pub const EOPNOTSUPP: Self = Self(45);
100 pub const EPFNOSUPPORT: Self = Self(46);
102 pub const EAFNOSUPPORT: Self = Self(47);
104 pub const EADDRINUSE: Self = Self(48);
106 pub const EADDRNOTAVAIL: Self = Self(49);
108 pub const ENETDOWN: Self = Self(50);
110 pub const ENETUNREACH: Self = Self(51);
112 pub const ENETRESET: Self = Self(52);
114 pub const ECONNABORTED: Self = Self(53);
116 pub const ECONNRESET: Self = Self(54);
118 pub const ENOBUFS: Self = Self(55);
120 pub const EISCONN: Self = Self(56);
122 pub const ENOTCONN: Self = Self(57);
124 pub const ESHUTDOWN: Self = Self(58);
126 pub const ETOOMANYREFS: Self = Self(59);
128 pub const ETIMEDOUT: Self = Self(60);
130 pub const ECONNREFUSED: Self = Self(61);
132 pub const ELOOP: Self = Self(62);
134 pub const ENAMETOOLONG: Self = Self(63);
136 pub const EHOSTDOWN: Self = Self(64);
138 pub const EHOSTUNREACH: Self = Self(65);
140 pub const ENOTEMPTY: Self = Self(66);
142 pub const EUSERS: Self = Self(68);
144 pub const EDQUOT: Self = Self(69);
146 pub const ESTALE: Self = Self(70);
148 pub const EREMOTE: Self = Self(71);
150 pub const ENOLCK: Self = Self(77);
152 pub const ENOSYS: Self = Self(78);
154 pub const ENOMSG: Self = Self(80);
156 pub const EIDRM: Self = Self(81);
158 pub const ENOSR: Self = Self(82);
160 pub const ETIME: Self = Self(83);
162 pub const EBADMSG: Self = Self(84);
164 pub const EPROTO: Self = Self(85);
166 pub const ENODATA: Self = Self(86);
168 pub const ENOSTR: Self = Self(87);
170 pub const ECHRNG: Self = Self(88);
172 pub const EL2NSYNC: Self = Self(89);
174 pub const EL3HLT: Self = Self(90);
176 pub const EL3RST: Self = Self(91);
178 pub const ENOPKG: Self = Self(92);
180 pub const ELNRNG: Self = Self(93);
182 pub const EUNATCH: Self = Self(94);
184 pub const ENOCSI: Self = Self(95);
186 pub const EL2HLT: Self = Self(96);
188 pub const EBADE: Self = Self(97);
190 pub const EBADR: Self = Self(98);
192 pub const EXFULL: Self = Self(99);
194 pub const ENOANO: Self = Self(100);
196 pub const EBADRQC: Self = Self(101);
198 pub const EBADSLT: Self = Self(102);
200 pub const EBFONT: Self = Self(104);
202 pub const ENONET: Self = Self(105);
204 pub const ENOLINK: Self = Self(106);
206 pub const EADV: Self = Self(107);
208 pub const ESRMNT: Self = Self(108);
210 pub const ECOMM: Self = Self(109);
212 pub const EMULTIHOP: Self = Self(110);
214 pub const EDOTDOT: Self = Self(111);
216 pub const EOVERFLOW: Self = Self(112);
218 pub const ENOTUNIQ: Self = Self(113);
220 pub const EBADFD: Self = Self(114);
222 pub const EREMCHG: Self = Self(115);
224 pub const EILSEQ: Self = Self(116);
226 pub const EUCLEAN: Self = Self(117);
228 pub const ENOTNAM: Self = Self(118);
230 pub const ENAVAIL: Self = Self(119);
232 pub const EISNAM: Self = Self(120);
234 pub const EREMOTEIO: Self = Self(121);
236 pub const ELIBACC: Self = Self(122);
238 pub const ELIBBAD: Self = Self(123);
240 pub const ELIBSCN: Self = Self(124);
242 pub const ELIBMAX: Self = Self(125);
244 pub const ELIBEXEC: Self = Self(126);
246 pub const ERESTART: Self = Self(127);
248 pub const ESTRPIPE: Self = Self(128);
250 pub const ENOMEDIUM: Self = Self(129);
252 pub const EMEDIUMTYPE: Self = Self(130);
254 pub const ECANCELED: Self = Self(131);
256 pub const ENOKEY: Self = Self(132);
258 pub const EKEYEXPIRED: Self = Self(133);
260 pub const EKEYREVOKED: Self = Self(134);
262 pub const EKEYREJECTED: Self = Self(135);
264 pub const EOWNERDEAD: Self = Self(136);
266 pub const ENOTRECOVERABLE: Self = Self(137);
268 pub const ERFKILL: Self = Self(138);
270 pub const EHWPOISON: Self = Self(139);
272 pub const ERESTARTSYS: Self = Self(512);
274 pub const ERESTARTNOINTR: Self = Self(513);
276 pub const ERESTARTNOHAND: Self = Self(514);
278 pub const ENOIOCTLCMD: Self = Self(515);
280 pub const ERESTART_RESTARTBLOCK: Self = Self(516);
282 pub const EPROBE_DEFER: Self = Self(517);
284 pub const EOPENSTALE: Self = Self(518);
286 pub const ENOPARAM: Self = Self(519);
288 pub const EBADHANDLE: Self = Self(521);
290 pub const ENOTSYNC: Self = Self(522);
292 pub const EBADCOOKIE: Self = Self(523);
294 pub const ENOTSUPP: Self = Self(524);
296 pub const ETOOSMALL: Self = Self(525);
298 pub const ESERVERFAULT: Self = Self(526);
300 pub const EBADTYPE: Self = Self(527);
302 pub const EJUKEBOX: Self = Self(528);
304 pub const EIOCBQUEUED: Self = Self(529);
306 pub const ERECALLCONFLICT: Self = Self(530);
308 pub const ENOGRACE: Self = Self(531);
310 pub const EDEADLOCK: Self = Self::EDEADLK;
312 pub const EWOULDBLOCK: Self = Self::EAGAIN;
314
315 pub const MIN: i32 = 1;
316 pub const MAX: i32 = 531;
317
318 #[cfg(feature = "iter")]
319 const ALL: [i32; 150] = [
320 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
321 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48,
322 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 68, 69, 70, 71, 77,
323 78, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100,
324 101, 102, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119,
325 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137,
326 138, 139, 512, 513, 514, 515, 516, 517, 518, 519, 521, 522, 523, 524, 525, 526, 527, 528,
327 529, 530, 531,
328 ];
329
330 pub(crate) fn name_and_description(&self) -> Option<(&'static str, &'static str)> {
331 match self.0 {
332 1 => Some(("EPERM", "Operation not permitted")),
333 2 => Some(("ENOENT", "No such file or directory")),
334 3 => Some(("ESRCH", "No such process")),
335 4 => Some(("EINTR", "Interrupted system call")),
336 5 => Some(("EIO", "I/O error")),
337 6 => Some(("ENXIO", "No such device or address")),
338 7 => Some(("E2BIG", "Argument list too long")),
339 8 => Some(("ENOEXEC", "Exec format error")),
340 9 => Some(("EBADF", "Bad file number")),
341 10 => Some(("ECHILD", "No child processes")),
342 11 => Some(("EDEADLK", "Resource deadlock would occur")),
343 12 => Some(("ENOMEM", "Out of memory")),
344 13 => Some(("EACCES", "Permission denied")),
345 14 => Some(("EFAULT", "Bad address")),
346 15 => Some(("ENOTBLK", "Block device required")),
347 16 => Some(("EBUSY", "Device or resource busy")),
348 17 => Some(("EEXIST", "File exists")),
349 18 => Some(("EXDEV", "Cross-device link")),
350 19 => Some(("ENODEV", "No such device")),
351 20 => Some(("ENOTDIR", "Not a directory")),
352 21 => Some(("EISDIR", "Is a directory")),
353 22 => Some(("EINVAL", "Invalid argument")),
354 23 => Some(("ENFILE", "File table overflow")),
355 24 => Some(("EMFILE", "Too many open files")),
356 25 => Some(("ENOTTY", "Not a typewriter")),
357 26 => Some(("ETXTBSY", "Text file busy")),
358 27 => Some(("EFBIG", "File too large")),
359 28 => Some(("ENOSPC", "No space left on device")),
360 29 => Some(("ESPIPE", "Illegal seek")),
361 30 => Some(("EROFS", "Read-only file system")),
362 31 => Some(("EMLINK", "Too many links")),
363 32 => Some(("EPIPE", "Broken pipe")),
364 33 => Some(("EDOM", "Math argument out of domain of func")),
365 34 => Some(("ERANGE", "Math result not representable")),
366 35 => Some(("EAGAIN", "Try again")),
367 36 => Some(("EINPROGRESS", "Operation now in progress")),
368 37 => Some(("EALREADY", "Operation already in progress")),
369 38 => Some(("ENOTSOCK", "Socket operation on non-socket")),
370 39 => Some(("EDESTADDRREQ", "Destination address required")),
371 40 => Some(("EMSGSIZE", "Message too long")),
372 41 => Some(("EPROTOTYPE", "Protocol wrong type for socket")),
373 42 => Some(("ENOPROTOOPT", "Protocol not available")),
374 43 => Some(("EPROTONOSUPPORT", "Protocol not supported")),
375 44 => Some(("ESOCKTNOSUPPORT", "Socket type not supported")),
376 45 => Some((
377 "EOPNOTSUPP",
378 "Operation not supported on transport endpoint",
379 )),
380 46 => Some(("EPFNOSUPPORT", "Protocol family not supported")),
381 47 => Some(("EAFNOSUPPORT", "Address family not supported by protocol")),
382 48 => Some(("EADDRINUSE", "Address already in use")),
383 49 => Some(("EADDRNOTAVAIL", "Cannot assign requested address")),
384 50 => Some(("ENETDOWN", "Network is down")),
385 51 => Some(("ENETUNREACH", "Network is unreachable")),
386 52 => Some(("ENETRESET", "Network dropped connection because of reset")),
387 53 => Some(("ECONNABORTED", "Software caused connection abort")),
388 54 => Some(("ECONNRESET", "Connection reset by peer")),
389 55 => Some(("ENOBUFS", "No buffer space available")),
390 56 => Some(("EISCONN", "Transport endpoint is already connected")),
391 57 => Some(("ENOTCONN", "Transport endpoint is not connected")),
392 58 => Some(("ESHUTDOWN", "Cannot send after transport endpoint shutdown")),
393 59 => Some(("ETOOMANYREFS", "Too many references: cannot splice")),
394 60 => Some(("ETIMEDOUT", "Connection timed out")),
395 61 => Some(("ECONNREFUSED", "Connection refused")),
396 62 => Some(("ELOOP", "Too many symbolic links encountered")),
397 63 => Some(("ENAMETOOLONG", "File name too long")),
398 64 => Some(("EHOSTDOWN", "Host is down")),
399 65 => Some(("EHOSTUNREACH", "No route to host")),
400 66 => Some(("ENOTEMPTY", "Directory not empty")),
401 68 => Some(("EUSERS", "Too many users")),
402 69 => Some(("EDQUOT", "Quota exceeded")),
403 70 => Some(("ESTALE", "Stale file handle")),
404 71 => Some(("EREMOTE", "Object is remote")),
405 77 => Some(("ENOLCK", "No record locks available")),
406 78 => Some(("ENOSYS", "Function not implemented")),
407 80 => Some(("ENOMSG", "No message of desired type")),
408 81 => Some(("EIDRM", "Identifier removed")),
409 82 => Some(("ENOSR", "Out of streams resources")),
410 83 => Some(("ETIME", "Timer expired")),
411 84 => Some(("EBADMSG", "Not a data message")),
412 85 => Some(("EPROTO", "Protocol error")),
413 86 => Some(("ENODATA", "No data available")),
414 87 => Some(("ENOSTR", "Device not a stream")),
415 88 => Some(("ECHRNG", "Channel number out of range")),
416 89 => Some(("EL2NSYNC", "Level 2 not synchronized")),
417 90 => Some(("EL3HLT", "Level 3 halted")),
418 91 => Some(("EL3RST", "Level 3 reset")),
419 92 => Some(("ENOPKG", "Package not installed")),
420 93 => Some(("ELNRNG", "Link number out of range")),
421 94 => Some(("EUNATCH", "Protocol driver not attached")),
422 95 => Some(("ENOCSI", "No CSI structure available")),
423 96 => Some(("EL2HLT", "Level 2 halted")),
424 97 => Some(("EBADE", "Invalid exchange")),
425 98 => Some(("EBADR", "Invalid request descriptor")),
426 99 => Some(("EXFULL", "Exchange full")),
427 100 => Some(("ENOANO", "No anode")),
428 101 => Some(("EBADRQC", "Invalid request code")),
429 102 => Some(("EBADSLT", "Invalid slot")),
430 104 => Some(("EBFONT", "Bad font file format")),
431 105 => Some(("ENONET", "Machine is not on the network")),
432 106 => Some(("ENOLINK", "Link has been severed")),
433 107 => Some(("EADV", "Advertise error")),
434 108 => Some(("ESRMNT", "Srmount error")),
435 109 => Some(("ECOMM", "Communication error on send")),
436 110 => Some(("EMULTIHOP", "Multihop attempted")),
437 111 => Some(("EDOTDOT", "RFS specific error")),
438 112 => Some(("EOVERFLOW", "Value too large for defined data type")),
439 113 => Some(("ENOTUNIQ", "Name not unique on network")),
440 114 => Some(("EBADFD", "File descriptor in bad state")),
441 115 => Some(("EREMCHG", "Remote address changed")),
442 116 => Some(("EILSEQ", "Illegal byte sequence")),
443 117 => Some(("EUCLEAN", "Structure needs cleaning")),
444 118 => Some(("ENOTNAM", "Not a XENIX named type file")),
445 119 => Some(("ENAVAIL", "No XENIX semaphores available")),
446 120 => Some(("EISNAM", "Is a named type file")),
447 121 => Some(("EREMOTEIO", "Remote I/O error")),
448 122 => Some(("ELIBACC", "Can not access a needed shared library")),
449 123 => Some(("ELIBBAD", "Accessing a corrupted shared library")),
450 124 => Some(("ELIBSCN", ".lib section in a.out corrupted")),
451 125 => Some(("ELIBMAX", "Attempting to link in too many shared libraries")),
452 126 => Some(("ELIBEXEC", "Cannot exec a shared library directly")),
453 127 => Some(("ERESTART", "Interrupted system call should be restarted")),
454 128 => Some(("ESTRPIPE", "Streams pipe error")),
455 129 => Some(("ENOMEDIUM", "No medium found")),
456 130 => Some(("EMEDIUMTYPE", "Wrong medium type")),
457 131 => Some(("ECANCELED", "Operation Cancelled")),
458 132 => Some(("ENOKEY", "Required key not available")),
459 133 => Some(("EKEYEXPIRED", "Key has expired")),
460 134 => Some(("EKEYREVOKED", "Key has been revoked")),
461 135 => Some(("EKEYREJECTED", "Key was rejected by service")),
462 136 => Some(("EOWNERDEAD", "Owner died")),
463 137 => Some(("ENOTRECOVERABLE", "State not recoverable")),
464 138 => Some(("ERFKILL", "Operation not possible due to RF-kill")),
465 139 => Some(("EHWPOISON", "Memory page has hardware error")),
466 512 => Some(("ERESTARTSYS", "Restart syscall")),
467 513 => Some(("ERESTARTNOINTR", "Restart if no interrupt")),
468 514 => Some(("ERESTARTNOHAND", "restart if no handler..")),
469 515 => Some(("ENOIOCTLCMD", "No ioctl command")),
470 516 => Some((
471 "ERESTART_RESTARTBLOCK",
472 "restart by calling sys_restart_syscall",
473 )),
474 517 => Some(("EPROBE_DEFER", "Driver requests probe retry")),
475 518 => Some(("EOPENSTALE", "open found a stale dentry")),
476 519 => Some(("ENOPARAM", "Parameter not supported")),
477 521 => Some(("EBADHANDLE", "Illegal NFS file handle")),
478 522 => Some(("ENOTSYNC", "Update synchronization mismatch")),
479 523 => Some(("EBADCOOKIE", "Cookie is stale")),
480 524 => Some(("ENOTSUPP", "Operation is not supported")),
481 525 => Some(("ETOOSMALL", "Buffer or request is too small")),
482 526 => Some(("ESERVERFAULT", "An untranslatable error occurred")),
483 527 => Some(("EBADTYPE", "Type not supported by server")),
484 528 => Some((
485 "EJUKEBOX",
486 "Request initiated, but will not complete before timeout",
487 )),
488 529 => Some(("EIOCBQUEUED", "iocb queued, will get completion event")),
489 530 => Some(("ERECALLCONFLICT", "conflict with recalled state")),
490 531 => Some(("ENOGRACE", "NFS file lock reclaim refused")),
491 _ => None,
492 }
493 }
494}