linux_drm/
result.rs

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}