1#[derive(Clone, Copy, Debug, PartialEq, Eq)]
2pub enum Error {
3 Invalid,
4 NonExist,
5 SystemMem,
6 GraphicsMem,
7 Permission,
8 Disconnected,
9 NotSupported,
10 RemoteFailure,
11 Died,
12 Other(linux_io::result::Error),
13}
14
15impl From<linux_io::result::Error> for Error {
16 fn from(value: linux_io::result::Error) -> Self {
17 match value {
18 linux_io::result::EINVAL => Self::Invalid,
19 linux_io::result::ENOENT => Self::NonExist,
20 linux_io::result::ENOMEM => Self::SystemMem,
21 linux_io::result::ENOSPC => Self::SystemMem,
22 linux_io::result::EPERM | linux_io::result::EACCES => Self::Permission,
23 linux_io::result::ENODEV => Self::Disconnected,
24 linux_io::result::EOPNOTSUPP => Self::NotSupported,
25 linux_io::result::ENXIO => Self::RemoteFailure,
26 linux_io::result::EIO => Self::Died,
27 _ => Self::Other(value),
28 }
29 }
30}
31
32impl Into<linux_io::result::Error> for Error {
33 fn into(self) -> linux_io::result::Error {
34 match self {
35 Error::Invalid => linux_io::result::EINVAL,
36 Error::NonExist => linux_io::result::ENOENT,
37 Error::SystemMem => linux_io::result::ENOMEM,
38 Error::GraphicsMem => linux_io::result::ENOSPC,
39 Error::Permission => linux_io::result::EPERM,
40 Error::Disconnected => linux_io::result::ENODEV,
41 Error::NotSupported => linux_io::result::EOPNOTSUPP,
42 Error::RemoteFailure => linux_io::result::ENXIO,
43 Error::Died => linux_io::result::EIO,
44 Error::Other(v) => v,
45 }
46 }
47}
48
49impl From<alloc::collections::TryReserveError> for Error {
50 #[inline(always)]
51 fn from(_: alloc::collections::TryReserveError) -> Self {
52 Self::SystemMem
53 }
54}
55
56#[derive(Debug)]
57pub enum InitError {
58 NotDrmCard,
59 Other(linux_io::result::Error),
60}
61
62impl Into<linux_io::result::Error> for InitError {
63 fn into(self) -> linux_io::result::Error {
64 match self {
65 InitError::NotDrmCard => linux_io::result::ENOTTY,
66 InitError::Other(e) => e,
67 }
68 }
69}
70
71impl From<linux_io::result::Error> for InitError {
72 fn from(value: linux_io::result::Error) -> Self {
73 match value {
74 linux_io::result::ENOTTY => InitError::NotDrmCard,
75 _ => InitError::Other(value),
76 }
77 }
78}