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 EBFONT: Self = Self(59);
124 pub const ENOSTR: Self = Self(60);
126 pub const ENODATA: Self = Self(61);
128 pub const ETIME: Self = Self(62);
130 pub const ENOSR: Self = Self(63);
132 pub const ENONET: Self = Self(64);
134 pub const ENOPKG: Self = Self(65);
136 pub const EREMOTE: Self = Self(66);
138 pub const ENOLINK: Self = Self(67);
140 pub const EADV: Self = Self(68);
142 pub const ESRMNT: Self = Self(69);
144 pub const ECOMM: Self = Self(70);
146 pub const EPROTO: Self = Self(71);
148 pub const EMULTIHOP: Self = Self(72);
150 pub const EDOTDOT: Self = Self(73);
152 pub const EBADMSG: Self = Self(74);
154 pub const EOVERFLOW: Self = Self(75);
156 pub const ENOTUNIQ: Self = Self(76);
158 pub const EBADFD: Self = Self(77);
160 pub const EREMCHG: Self = Self(78);
162 pub const ELIBACC: Self = Self(79);
164 pub const ELIBBAD: Self = Self(80);
166 pub const ELIBSCN: Self = Self(81);
168 pub const ELIBMAX: Self = Self(82);
170 pub const ELIBEXEC: Self = Self(83);
172 pub const EILSEQ: Self = Self(84);
174 pub const ERESTART: Self = Self(85);
176 pub const ESTRPIPE: Self = Self(86);
178 pub const EUSERS: Self = Self(87);
180 pub const ENOTSOCK: Self = Self(88);
182 pub const EDESTADDRREQ: Self = Self(89);
184 pub const EMSGSIZE: Self = Self(90);
186 pub const EPROTOTYPE: Self = Self(91);
188 pub const ENOPROTOOPT: Self = Self(92);
190 pub const EPROTONOSUPPORT: Self = Self(93);
192 pub const ESOCKTNOSUPPORT: Self = Self(94);
194 pub const EOPNOTSUPP: Self = Self(95);
196 pub const EPFNOSUPPORT: Self = Self(96);
198 pub const EAFNOSUPPORT: Self = Self(97);
200 pub const EADDRINUSE: Self = Self(98);
202 pub const EADDRNOTAVAIL: Self = Self(99);
204 pub const ENETDOWN: Self = Self(100);
206 pub const ENETUNREACH: Self = Self(101);
208 pub const ENETRESET: Self = Self(102);
210 pub const ECONNABORTED: Self = Self(103);
212 pub const ECONNRESET: Self = Self(104);
214 pub const ENOBUFS: Self = Self(105);
216 pub const EISCONN: Self = Self(106);
218 pub const ENOTCONN: Self = Self(107);
220 pub const ESHUTDOWN: Self = Self(108);
222 pub const ETOOMANYREFS: Self = Self(109);
224 pub const ETIMEDOUT: Self = Self(110);
226 pub const ECONNREFUSED: Self = Self(111);
228 pub const EHOSTDOWN: Self = Self(112);
230 pub const EHOSTUNREACH: Self = Self(113);
232 pub const EALREADY: Self = Self(114);
234 pub const EINPROGRESS: Self = Self(115);
236 pub const ESTALE: Self = Self(116);
238 pub const EUCLEAN: Self = Self(117);
240 pub const ENOTNAM: Self = Self(118);
242 pub const ENAVAIL: Self = Self(119);
244 pub const EISNAM: Self = Self(120);
246 pub const EREMOTEIO: Self = Self(121);
248 pub const EDQUOT: Self = Self(122);
250 pub const ENOMEDIUM: Self = Self(123);
252 pub const EMEDIUMTYPE: Self = Self(124);
254 pub const ECANCELED: Self = Self(125);
256 pub const ENOKEY: Self = Self(126);
258 pub const EKEYEXPIRED: Self = Self(127);
260 pub const EKEYREVOKED: Self = Self(128);
262 pub const EKEYREJECTED: Self = Self(129);
264 pub const EOWNERDEAD: Self = Self(130);
266 pub const ENOTRECOVERABLE: Self = Self(131);
268 pub const ERFKILL: Self = Self(132);
270 pub const EHWPOISON: Self = Self(133);
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, 42, 43, 44, 45, 46, 47, 48, 49,
322 50, 51, 52, 53, 54, 55, 56, 57, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73,
323 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96,
324 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115,
325 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133,
326 512, 513, 514, 515, 516, 517, 518, 519, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530,
327 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 59 => Some(("EBFONT", "Bad font file format")),
389 60 => Some(("ENOSTR", "Device not a stream")),
390 61 => Some(("ENODATA", "No data available")),
391 62 => Some(("ETIME", "Timer expired")),
392 63 => Some(("ENOSR", "Out of streams resources")),
393 64 => Some(("ENONET", "Machine is not on the network")),
394 65 => Some(("ENOPKG", "Package not installed")),
395 66 => Some(("EREMOTE", "Object is remote")),
396 67 => Some(("ENOLINK", "Link has been severed")),
397 68 => Some(("EADV", "Advertise error")),
398 69 => Some(("ESRMNT", "Srmount error")),
399 70 => Some(("ECOMM", "Communication error on send")),
400 71 => Some(("EPROTO", "Protocol error")),
401 72 => Some(("EMULTIHOP", "Multihop attempted")),
402 73 => Some(("EDOTDOT", "RFS specific error")),
403 74 => Some(("EBADMSG", "Not a data message")),
404 75 => Some(("EOVERFLOW", "Value too large for defined data type")),
405 76 => Some(("ENOTUNIQ", "Name not unique on network")),
406 77 => Some(("EBADFD", "File descriptor in bad state")),
407 78 => Some(("EREMCHG", "Remote address changed")),
408 79 => Some(("ELIBACC", "Can not access a needed shared library")),
409 80 => Some(("ELIBBAD", "Accessing a corrupted shared library")),
410 81 => Some(("ELIBSCN", ".lib section in a.out corrupted")),
411 82 => Some(("ELIBMAX", "Attempting to link in too many shared libraries")),
412 83 => Some(("ELIBEXEC", "Cannot exec a shared library directly")),
413 84 => Some(("EILSEQ", "Illegal byte sequence")),
414 85 => Some(("ERESTART", "Interrupted system call should be restarted")),
415 86 => Some(("ESTRPIPE", "Streams pipe error")),
416 87 => Some(("EUSERS", "Too many users")),
417 88 => Some(("ENOTSOCK", "Socket operation on non-socket")),
418 89 => Some(("EDESTADDRREQ", "Destination address required")),
419 90 => Some(("EMSGSIZE", "Message too long")),
420 91 => Some(("EPROTOTYPE", "Protocol wrong type for socket")),
421 92 => Some(("ENOPROTOOPT", "Protocol not available")),
422 93 => Some(("EPROTONOSUPPORT", "Protocol not supported")),
423 94 => Some(("ESOCKTNOSUPPORT", "Socket type not supported")),
424 95 => Some((
425 "EOPNOTSUPP",
426 "Operation not supported on transport endpoint",
427 )),
428 96 => Some(("EPFNOSUPPORT", "Protocol family not supported")),
429 97 => Some(("EAFNOSUPPORT", "Address family not supported by protocol")),
430 98 => Some(("EADDRINUSE", "Address already in use")),
431 99 => Some(("EADDRNOTAVAIL", "Cannot assign requested address")),
432 100 => Some(("ENETDOWN", "Network is down")),
433 101 => Some(("ENETUNREACH", "Network is unreachable")),
434 102 => Some(("ENETRESET", "Network dropped connection because of reset")),
435 103 => Some(("ECONNABORTED", "Software caused connection abort")),
436 104 => Some(("ECONNRESET", "Connection reset by peer")),
437 105 => Some(("ENOBUFS", "No buffer space available")),
438 106 => Some(("EISCONN", "Transport endpoint is already connected")),
439 107 => Some(("ENOTCONN", "Transport endpoint is not connected")),
440 108 => Some(("ESHUTDOWN", "Cannot send after transport endpoint shutdown")),
441 109 => Some(("ETOOMANYREFS", "Too many references: cannot splice")),
442 110 => Some(("ETIMEDOUT", "Connection timed out")),
443 111 => Some(("ECONNREFUSED", "Connection refused")),
444 112 => Some(("EHOSTDOWN", "Host is down")),
445 113 => Some(("EHOSTUNREACH", "No route to host")),
446 114 => Some(("EALREADY", "Operation already in progress")),
447 115 => Some(("EINPROGRESS", "Operation now in progress")),
448 116 => Some(("ESTALE", "Stale file handle")),
449 117 => Some(("EUCLEAN", "Structure needs cleaning")),
450 118 => Some(("ENOTNAM", "Not a XENIX named type file")),
451 119 => Some(("ENAVAIL", "No XENIX semaphores available")),
452 120 => Some(("EISNAM", "Is a named type file")),
453 121 => Some(("EREMOTEIO", "Remote I/O error")),
454 122 => Some(("EDQUOT", "Quota exceeded")),
455 123 => Some(("ENOMEDIUM", "No medium found")),
456 124 => Some(("EMEDIUMTYPE", "Wrong medium type")),
457 125 => Some(("ECANCELED", "Operation Canceled")),
458 126 => Some(("ENOKEY", "Required key not available")),
459 127 => Some(("EKEYEXPIRED", "Key has expired")),
460 128 => Some(("EKEYREVOKED", "Key has been revoked")),
461 129 => Some(("EKEYREJECTED", "Key was rejected by service")),
462 130 => Some(("EOWNERDEAD", "Owner died")),
463 131 => Some(("ENOTRECOVERABLE", "State not recoverable")),
464 132 => Some(("ERFKILL", "Operation not possible due to RF-kill")),
465 133 => 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}