userspace/target/architecture/traits/
callable.rs

1type C = usize;
2
3pub type Syscall0 = fn(C) -> crate::Result;
4pub type Syscall1 = fn(C, C) -> crate::Result;
5pub type Syscall2 = fn(C, C, C) -> crate::Result;
6pub type Syscall3 = fn(C, C, C, C) -> crate::Result;
7pub type Syscall4 = fn(C, C, C, C, C) -> crate::Result;
8pub type Syscall5 = fn(C, C, C, C, C, C) -> crate::Result;
9pub type Syscall6 = fn(C, C, C, C, C, C, C) -> crate::Result;
10
11enum Syscall {
12    Syscall0,
13    Syscall1,
14    Syscall2,
15    Syscall3,
16    Syscall4,
17    Syscall5,
18    Syscall6,
19}
20
21pub trait Callable {
22    fn _syscall0(n: C) -> crate::Result;
23    fn _syscall1(n: C, a1: C) -> crate::Result;
24    fn _syscall2(n: C, a1: C, a2: C) -> crate::Result;
25    fn _syscall3(n: C, a1: C, a2: C, a3: C) -> crate::Result;
26    fn _syscall4(n: C, a1: C, a2: C, a3: C, a4: C) -> crate::Result;
27    fn _syscall5(n: C, a1: C, a2: C, a3: C, a4: C, a5: C) -> crate::Result;
28    fn _syscall6(n: C, a1: C, a2: C, a3: C, a4: C, a5: C, a6: C) -> crate::Result;
29
30    crate::wrap_syscall!(syscall0, _syscall0, n:C);
31    crate::wrap_syscall!(syscall1, _syscall1, n:C, a1: C);
32    crate::wrap_syscall!(syscall2, _syscall2, n:C, a1: C, a2: C);
33    crate::wrap_syscall!(syscall3, _syscall3, n:C, a1: C, a2: C, a3: C);
34    crate::wrap_syscall!(syscall4, _syscall4, n:C, a1: C, a2: C, a3: C, a4: C);
35    crate::wrap_syscall!(syscall5, _syscall5, n:C, a1: C, a2: C, a3: C, a4: C, a5: C);
36    crate::wrap_syscall!(syscall6, _syscall6, n:C, a1: C, a2: C, a3: C, a4: C, a5: C, a6: C);
37}