userspace/target/architecture/x86_64/syscall/
result.rs

1pub mod ok {
2    ample::result!(
3        Ok;
4        "Human Ok";
5        usize;
6        [
7            [0; X86_64_SYSCALL_DEFAULT_OK; X86_64Syscall; usize; "ZE"; "Entry to ze"],
8            [1; X86_64_SYSCALL0_OK; X86_64Syscall0; super::super::syscall0::Ok; "ZE"; "Entry to ze"],
9            [2; X86_64_SYSCALL1_OK; X86_64Syscall1; super::super::syscall1::Ok; "ZE"; "Entry to ze"],
10            [3; X86_64_SYSCALL2_OK; X86_64Syscall2; super::super::syscall2::Ok; "ZE"; "Entry to ze"],
11            [4; X86_64_SYSCALL3_OK; X86_64Syscall3; super::super::syscall3::Ok; "ZE"; "Entry to ze"],
12            [5; X86_64_SYSCALL4_OK; X86_64Syscall4; super::super::syscall4::Ok; "ZE"; "Entry to ze"],
13            [6; X86_64_SYSCALL5_OK; X86_64Syscall5; super::super::syscall5::Ok; "ZE"; "Entry to ze"],
14            [7; X86_64_SYSCALL6_OK; X86_64Syscall6; super::super::syscall6::Ok; "ZE"; "Entry to ze"],
15        ]
16    );
17
18    impl Ok {
19        pub fn from_no(no: usize) -> Self {
20            Ok::X86_64Syscall(no)
21        }
22    }
23}
24
25pub mod error {
26    ample::result!(
27        Error;
28        "Human error";
29        usize;
30        [
31            [0; X86_64_SYSCALL_DEFAULT_ERROR; X86_64Syscall; usize; "ZE"; "Entry to ze"],
32            [1; X86_64_SYSCALL0_ERROR; X86_64Syscall0; super::super::syscall0::Error; "ZE"; "Entry to ze"],
33            [2; X86_64_SYSCALL1_ERROR; X86_64Syscall1; super::super::syscall1::Error; "ZE"; "Entry to ze"],
34            [3; X86_64_SYSCALL2_ERROR; X86_64Syscall2; super::super::syscall2::Error; "ZE"; "Entry to ze"],
35            [4; X86_64_SYSCALL3_ERROR; X86_64Syscall3; super::super::syscall3::Error; "ZE"; "Entry to ze"],
36            [5; X86_64_SYSCALL4_ERROR; X86_64Syscall4; super::super::syscall4::Error; "ZE"; "Entry to ze"],
37            [6; X86_64_SYSCALL5_ERROR; X86_64Syscall5; super::super::syscall5::Error; "ZE"; "Entry to ze"],
38            [7; X86_64_SYSCALL6_ERROR; X86_64Syscall6; super::super::syscall6::Error; "ZE"; "Entry to ze"],
39        ]
40    );
41
42    impl Error {
43        pub fn from_no(no: usize) -> Self {
44            Error::X86_64Syscall(no)
45        }
46    }
47}
48
49pub use error::Error;
50pub use ok::Ok;
51
52pub type Result = core::result::Result<Ok, Error>;
53
54pub fn handle_result(result: usize) -> crate::Result {
55    if (result as isize) < 0 {
56        core::result::Result::Err(crate::Error::Target(crate::target::Error::Arch(
57            crate::target::arch::Error::X86_64Syscall(Error::from_no(result)),
58        )))
59    } else {
60        core::result::Result::Ok(crate::Ok::Target(crate::target::Ok::Arch(
61            crate::target::arch::Ok::X86_64Syscall(Ok::from_no(result)),
62        )))
63    }
64}