macro_rules! define_syscall_error {
(
$(#[$enum_meta:meta])*
$vis:vis enum $name:ident {
$(
$(#[$var_meta:meta])*
$variant:ident = $code:tt
),*
$(,)?
}
) => {
#[repr(isize)]
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
$(#[$enum_meta])*
$vis enum $name {
$(
$(#[$var_meta])*
$variant = $code
),*
}
impl $name {
pub fn from_raw(val: isize) -> Self {
match val {
$($code => Self::$variant,)*
_ => unreachable!("unknown syscall error: {val}"),
}
}
}
impl core::fmt::Display for $name {
fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
f.write_str(moa_uapi::error::err_msg(*self as isize))
}
}
};
}