userspace/target/architecture/traits/
callable.rs1type 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}