translate FsError to SysError

toolchain_update
Ben Pig Chu 6 years ago
parent f8533442f2
commit 113a33e575

@ -290,16 +290,35 @@ pub enum SysError {
// name conversion E_XXXXX -> SysError::Xxxxx
// see https://github.com/oscourse-tsinghua/ucore_plus/blob/master/ucore/src/libs-user-ucore/common/error.h
// we only add current used errors here
Noent = 2,// No such file or directory
Badf = 9,// Invaild fd number
Nomem = 12,// Out of memory, also used as no device space in ucore
Exist = 17,// File exists
Xdev = 18,// Cross-device link
Notdir = 20,// Fd is not a directory
Isdir = 21,// Fd is a directory
Inval = 22,// Invalid argument.
Unimp = 35,// Not implemented operation
#[allow(dead_code)]
Unknown = 65535,// A really really unknown error.
}
impl From<FsError> for SysError {
fn from(error: FsError) -> Self {
match error {
_ => SysError::Unknown
FsError::NotSupported => SysError::Unimp,
FsError::NotFile => SysError::Isdir,
FsError::IsDir => SysError::Isdir,
FsError::NotDir => SysError::Notdir,
FsError::EntryNotFound => SysError::Noent,
FsError::EntryExist => SysError::Exist,
FsError::NotSameFs => SysError::Xdev,
FsError::InvalidParam => SysError::Inval,
FsError::NoDeviceSpace => SysError::Nomem,
FsError::DirRemoved => SysError::Noent,
FsError::DirNotEmpty => SysError::Isdir,// It should be E_NOTEMPTY in linux, but in ucore it is equal to E_Isdir
FsError::WrongFs => SysError::Inval,
}
}
}

Loading…
Cancel
Save