userspace/target/architecture/x86_64/syscall/
result.rs1pub 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}