blob: 99fa474c9f249b02ee79126db7d021adcddb12cf [file] [log] [blame]
/// A system call error code. This can either be an error code returned by the
/// kernel or BADRVAL, which indicates the kernel returned the wrong type of
/// response to a system call.
// ErrorCode is not an enum so that conversion from the kernel's return value (a
// `usize` in a register) is free.
#[derive(Clone, Copy, PartialEq, Eq)]
pub struct ErrorCode {
value: usize,
}
impl From<usize> for ErrorCode {
fn from(value: usize) -> ErrorCode {
ErrorCode { value }
}
}
impl From<ErrorCode> for usize {
fn from(error_code: ErrorCode) -> usize {
error_code.value
}
}
pub const FAIL: ErrorCode = ErrorCode { value: 1 };
pub const BUSY: ErrorCode = ErrorCode { value: 2 };
pub const ALREADY: ErrorCode = ErrorCode { value: 3 };
pub const OFF: ErrorCode = ErrorCode { value: 4 };
pub const RESERVE: ErrorCode = ErrorCode { value: 5 };
pub const INVALID: ErrorCode = ErrorCode { value: 6 };
pub const SIZE: ErrorCode = ErrorCode { value: 7 };
pub const CANCEL: ErrorCode = ErrorCode { value: 8 };
pub const NOMEM: ErrorCode = ErrorCode { value: 9 };
pub const NOSUPPORT: ErrorCode = ErrorCode { value: 10 };
pub const NODEVICE: ErrorCode = ErrorCode { value: 11 };
pub const UNINSTALLED: ErrorCode = ErrorCode { value: 12 };
pub const NOACK: ErrorCode = ErrorCode { value: 13 };
pub const BADRVAL: ErrorCode = ErrorCode { value: 1024 };