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 EAGAIN: 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 EDEADLK: Self = Self(35);
80 pub const ENAMETOOLONG: Self = Self(36);
82 pub const ENOLCK: Self = Self(37);
84 pub const ENOSYS: Self = Self(38);
86 pub const ENOTEMPTY: Self = Self(39);
88 pub const ELOOP: Self = Self(40);
90 pub const ENOMSG: Self = Self(42);
92 pub const EIDRM: Self = Self(43);
94 pub const ECHRNG: Self = Self(44);
96 pub const EL2NSYNC: Self = Self(45);
98 pub const EL3HLT: Self = Self(46);
100 pub const EL3RST: Self = Self(47);
102 pub const ELNRNG: Self = Self(48);
104 pub const EUNATCH: Self = Self(49);
106 pub const ENOCSI: Self = Self(50);
108 pub const EL2HLT: Self = Self(51);
110 pub const EBADE: Self = Self(52);
112 pub const EBADR: Self = Self(53);
114 pub const EXFULL: Self = Self(54);
116 pub const ENOANO: Self = Self(55);
118 pub const EBADRQC: Self = Self(56);
120 pub const EBADSLT: Self = Self(57);
122 pub const EDEADLOCK: Self = Self(58);
124 pub const EBFONT: Self = Self(59);
126 pub const ENOSTR: Self = Self(60);
128 pub const ENODATA: Self = Self(61);
130 pub const ETIME: Self = Self(62);
132 pub const ENOSR: Self = Self(63);
134 pub const ENONET: Self = Self(64);
136 pub const ENOPKG: Self = Self(65);
138 pub const EREMOTE: Self = Self(66);
140 pub const ENOLINK: Self = Self(67);
142 pub const EADV: Self = Self(68);
144 pub const ESRMNT: Self = Self(69);
146 pub const ECOMM: Self = Self(70);
148 pub const EPROTO: Self = Self(71);
150 pub const EMULTIHOP: Self = Self(72);
152 pub const EDOTDOT: Self = Self(73);
154 pub const EBADMSG: Self = Self(74);
156 pub const EOVERFLOW: Self = Self(75);
158 pub const ENOTUNIQ: Self = Self(76);
160 pub const EBADFD: Self = Self(77);
162 pub const EREMCHG: Self = Self(78);
164 pub const ELIBACC: Self = Self(79);
166 pub const ELIBBAD: Self = Self(80);
168 pub const ELIBSCN: Self = Self(81);
170 pub const ELIBMAX: Self = Self(82);
172 pub const ELIBEXEC: Self = Self(83);
174 pub const EILSEQ: Self = Self(84);
176 pub const ERESTART: Self = Self(85);
178 pub const ESTRPIPE: Self = Self(86);
180 pub const EUSERS: Self = Self(87);
182 pub const ENOTSOCK: Self = Self(88);
184 pub const EDESTADDRREQ: Self = Self(89);
186 pub const EMSGSIZE: Self = Self(90);
188 pub const EPROTOTYPE: Self = Self(91);
190 pub const ENOPROTOOPT: Self = Self(92);
192 pub const EPROTONOSUPPORT: Self = Self(93);
194 pub const ESOCKTNOSUPPORT: Self = Self(94);
196 pub const EOPNOTSUPP: Self = Self(95);
198 pub const EPFNOSUPPORT: Self = Self(96);
200 pub const EAFNOSUPPORT: Self = Self(97);
202 pub const EADDRINUSE: Self = Self(98);
204 pub const EADDRNOTAVAIL: Self = Self(99);
206 pub const ENETDOWN: Self = Self(100);
208 pub const ENETUNREACH: Self = Self(101);
210 pub const ENETRESET: Self = Self(102);
212 pub const ECONNABORTED: Self = Self(103);
214 pub const ECONNRESET: Self = Self(104);
216 pub const ENOBUFS: Self = Self(105);
218 pub const EISCONN: Self = Self(106);
220 pub const ENOTCONN: Self = Self(107);
222 pub const ESHUTDOWN: Self = Self(108);
224 pub const ETOOMANYREFS: Self = Self(109);
226 pub const ETIMEDOUT: Self = Self(110);
228 pub const ECONNREFUSED: Self = Self(111);
230 pub const EHOSTDOWN: Self = Self(112);
232 pub const EHOSTUNREACH: Self = Self(113);
234 pub const EALREADY: Self = Self(114);
236 pub const EINPROGRESS: Self = Self(115);
238 pub const ESTALE: Self = Self(116);
240 pub const EUCLEAN: Self = Self(117);
242 pub const ENOTNAM: Self = Self(118);
244 pub const ENAVAIL: Self = Self(119);
246 pub const EISNAM: Self = Self(120);
248 pub const EREMOTEIO: Self = Self(121);
250 pub const EDQUOT: Self = Self(122);
252 pub const ENOMEDIUM: Self = Self(123);
254 pub const EMEDIUMTYPE: Self = Self(124);
256 pub const ECANCELED: Self = Self(125);
258 pub const ENOKEY: Self = Self(126);
260 pub const EKEYEXPIRED: Self = Self(127);
262 pub const EKEYREVOKED: Self = Self(128);
264 pub const EKEYREJECTED: Self = Self(129);
266 pub const EOWNERDEAD: Self = Self(130);
268 pub const ENOTRECOVERABLE: Self = Self(131);
270 pub const ERFKILL: Self = Self(132);
272 pub const EHWPOISON: Self = Self(133);
274 pub const ERESTARTSYS: Self = Self(512);
276 pub const ERESTARTNOINTR: Self = Self(513);
278 pub const ERESTARTNOHAND: Self = Self(514);
280 pub const ENOIOCTLCMD: Self = Self(515);
282 pub const ERESTART_RESTARTBLOCK: Self = Self(516);
284 pub const EPROBE_DEFER: Self = Self(517);
286 pub const EOPENSTALE: Self = Self(518);
288 pub const ENOPARAM: Self = Self(519);
290 pub const EBADHANDLE: Self = Self(521);
292 pub const ENOTSYNC: Self = Self(522);
294 pub const EBADCOOKIE: Self = Self(523);
296 pub const ENOTSUPP: Self = Self(524);
298 pub const ETOOSMALL: Self = Self(525);
300 pub const ESERVERFAULT: Self = Self(526);
302 pub const EBADTYPE: Self = Self(527);
304 pub const EJUKEBOX: Self = Self(528);
306 pub const EIOCBQUEUED: Self = Self(529);
308 pub const ERECALLCONFLICT: Self = Self(530);
310 pub const ENOGRACE: Self = Self(531);
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; 151] = [
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, 42, 43, 44, 45, 46, 47, 48, 49,
322 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72,
323 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
324 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114,
325 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132,
326 133, 512, 513, 514, 515, 516, 517, 518, 519, 521, 522, 523, 524, 525, 526, 527, 528, 529,
327 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(("EAGAIN", "Try again")),
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(("EDEADLK", "Resource deadlock would occur")),
367 36 => Some(("ENAMETOOLONG", "File name too long")),
368 37 => Some(("ENOLCK", "No record locks available")),
369 38 => Some(("ENOSYS", "Invalid system call number")),
370 39 => Some(("ENOTEMPTY", "Directory not empty")),
371 40 => Some(("ELOOP", "Too many symbolic links encountered")),
372 42 => Some(("ENOMSG", "No message of desired type")),
373 43 => Some(("EIDRM", "Identifier removed")),
374 44 => Some(("ECHRNG", "Channel number out of range")),
375 45 => Some(("EL2NSYNC", "Level 2 not synchronized")),
376 46 => Some(("EL3HLT", "Level 3 halted")),
377 47 => Some(("EL3RST", "Level 3 reset")),
378 48 => Some(("ELNRNG", "Link number out of range")),
379 49 => Some(("EUNATCH", "Protocol driver not attached")),
380 50 => Some(("ENOCSI", "No CSI structure available")),
381 51 => Some(("EL2HLT", "Level 2 halted")),
382 52 => Some(("EBADE", "Invalid exchange")),
383 53 => Some(("EBADR", "Invalid request descriptor")),
384 54 => Some(("EXFULL", "Exchange full")),
385 55 => Some(("ENOANO", "No anode")),
386 56 => Some(("EBADRQC", "Invalid request code")),
387 57 => Some(("EBADSLT", "Invalid slot")),
388 58 => Some(("EDEADLOCK", "File locking deadlock error")),
389 59 => Some(("EBFONT", "Bad font file format")),
390 60 => Some(("ENOSTR", "Device not a stream")),
391 61 => Some(("ENODATA", "No data available")),
392 62 => Some(("ETIME", "Timer expired")),
393 63 => Some(("ENOSR", "Out of streams resources")),
394 64 => Some(("ENONET", "Machine is not on the network")),
395 65 => Some(("ENOPKG", "Package not installed")),
396 66 => Some(("EREMOTE", "Object is remote")),
397 67 => Some(("ENOLINK", "Link has been severed")),
398 68 => Some(("EADV", "Advertise error")),
399 69 => Some(("ESRMNT", "Srmount error")),
400 70 => Some(("ECOMM", "Communication error on send")),
401 71 => Some(("EPROTO", "Protocol error")),
402 72 => Some(("EMULTIHOP", "Multihop attempted")),
403 73 => Some(("EDOTDOT", "RFS specific error")),
404 74 => Some(("EBADMSG", "Not a data message")),
405 75 => Some(("EOVERFLOW", "Value too large for defined data type")),
406 76 => Some(("ENOTUNIQ", "Name not unique on network")),
407 77 => Some(("EBADFD", "File descriptor in bad state")),
408 78 => Some(("EREMCHG", "Remote address changed")),
409 79 => Some(("ELIBACC", "Can not access a needed shared library")),
410 80 => Some(("ELIBBAD", "Accessing a corrupted shared library")),
411 81 => Some(("ELIBSCN", ".lib section in a.out corrupted")),
412 82 => Some(("ELIBMAX", "Attempting to link in too many shared libraries")),
413 83 => Some(("ELIBEXEC", "Cannot exec a shared library directly")),
414 84 => Some(("EILSEQ", "Illegal byte sequence")),
415 85 => Some(("ERESTART", "Interrupted system call should be restarted")),
416 86 => Some(("ESTRPIPE", "Streams pipe error")),
417 87 => Some(("EUSERS", "Too many users")),
418 88 => Some(("ENOTSOCK", "Socket operation on non-socket")),
419 89 => Some(("EDESTADDRREQ", "Destination address required")),
420 90 => Some(("EMSGSIZE", "Message too long")),
421 91 => Some(("EPROTOTYPE", "Protocol wrong type for socket")),
422 92 => Some(("ENOPROTOOPT", "Protocol not available")),
423 93 => Some(("EPROTONOSUPPORT", "Protocol not supported")),
424 94 => Some(("ESOCKTNOSUPPORT", "Socket type not supported")),
425 95 => Some((
426 "EOPNOTSUPP",
427 "Operation not supported on transport endpoint",
428 )),
429 96 => Some(("EPFNOSUPPORT", "Protocol family not supported")),
430 97 => Some(("EAFNOSUPPORT", "Address family not supported by protocol")),
431 98 => Some(("EADDRINUSE", "Address already in use")),
432 99 => Some(("EADDRNOTAVAIL", "Cannot assign requested address")),
433 100 => Some(("ENETDOWN", "Network is down")),
434 101 => Some(("ENETUNREACH", "Network is unreachable")),
435 102 => Some(("ENETRESET", "Network dropped connection because of reset")),
436 103 => Some(("ECONNABORTED", "Software caused connection abort")),
437 104 => Some(("ECONNRESET", "Connection reset by peer")),
438 105 => Some(("ENOBUFS", "No buffer space available")),
439 106 => Some(("EISCONN", "Transport endpoint is already connected")),
440 107 => Some(("ENOTCONN", "Transport endpoint is not connected")),
441 108 => Some(("ESHUTDOWN", "Cannot send after transport endpoint shutdown")),
442 109 => Some(("ETOOMANYREFS", "Too many references: cannot splice")),
443 110 => Some(("ETIMEDOUT", "Connection timed out")),
444 111 => Some(("ECONNREFUSED", "Connection refused")),
445 112 => Some(("EHOSTDOWN", "Host is down")),
446 113 => Some(("EHOSTUNREACH", "No route to host")),
447 114 => Some(("EALREADY", "Operation already in progress")),
448 115 => Some(("EINPROGRESS", "Operation now in progress")),
449 116 => Some(("ESTALE", "Stale file handle")),
450 117 => Some(("EUCLEAN", "Structure needs cleaning")),
451 118 => Some(("ENOTNAM", "Not a XENIX named type file")),
452 119 => Some(("ENAVAIL", "No XENIX semaphores available")),
453 120 => Some(("EISNAM", "Is a named type file")),
454 121 => Some(("EREMOTEIO", "Remote I/O error")),
455 122 => Some(("EDQUOT", "Quota exceeded")),
456 123 => Some(("ENOMEDIUM", "No medium found")),
457 124 => Some(("EMEDIUMTYPE", "Wrong medium type")),
458 125 => Some(("ECANCELED", "Operation Canceled")),
459 126 => Some(("ENOKEY", "Required key not available")),
460 127 => Some(("EKEYEXPIRED", "Key has expired")),
461 128 => Some(("EKEYREVOKED", "Key has been revoked")),
462 129 => Some(("EKEYREJECTED", "Key was rejected by service")),
463 130 => Some(("EOWNERDEAD", "Owner died")),
464 131 => Some(("ENOTRECOVERABLE", "State not recoverable")),
465 132 => Some(("ERFKILL", "Operation not possible due to RF-kill")),
466 133 => Some(("EHWPOISON", "Memory page has hardware error")),
467 512 => Some(("ERESTARTSYS", "Restart syscall")),
468 513 => Some(("ERESTARTNOINTR", "Restart if no interrupt")),
469 514 => Some(("ERESTARTNOHAND", "restart if no handler..")),
470 515 => Some(("ENOIOCTLCMD", "No ioctl command")),
471 516 => Some((
472 "ERESTART_RESTARTBLOCK",
473 "restart by calling sys_restart_syscall",
474 )),
475 517 => Some(("EPROBE_DEFER", "Driver requests probe retry")),
476 518 => Some(("EOPENSTALE", "open found a stale dentry")),
477 519 => Some(("ENOPARAM", "Parameter not supported")),
478 521 => Some(("EBADHANDLE", "Illegal NFS file handle")),
479 522 => Some(("ENOTSYNC", "Update synchronization mismatch")),
480 523 => Some(("EBADCOOKIE", "Cookie is stale")),
481 524 => Some(("ENOTSUPP", "Operation is not supported")),
482 525 => Some(("ETOOSMALL", "Buffer or request is too small")),
483 526 => Some(("ESERVERFAULT", "An untranslatable error occurred")),
484 527 => Some(("EBADTYPE", "Type not supported by server")),
485 528 => Some((
486 "EJUKEBOX",
487 "Request initiated, but will not complete before timeout",
488 )),
489 529 => Some(("EIOCBQUEUED", "iocb queued, will get completion event")),
490 530 => Some(("ERECALLCONFLICT", "conflict with recalled state")),
491 531 => Some(("ENOGRACE", "NFS file lock reclaim refused")),
492 _ => None,
493 }
494 }
495}