1#[derive(Debug, Clone, Copy, PartialEq, Eq)]
2#[repr(u16)]
3pub enum SyscallTable {
4 SysExit = 0,
5 SysYield = 1,
6
7 SysOpen = 2,
8 SysDirIterOpen = 8,
9 SysClose = 5,
10 SysDirIterClose = 9,
11 SysDirIterNext = 10,
12 SysWrite = 3,
13 SysRead = 4,
14 SysCreate = 6,
15 SysCreateDir = 7,
16 SysSync = 16,
17 SysTruncate = 17,
18 SysCtl = 12,
19 SysFSize = 22,
21 SysFAttrs = 24,
22 SysGetDirEntry = 23,
23
24 SysCHDir = 14,
25 SysGetCWD = 15,
26 SysSbrk = 18,
27
28 SysPSpawn = 19,
29 SysWait = 11,
30
31 SysShutdown = 20,
32 SysReboot = 21,
33}
34
35impl SyscallTable {
36 const MAX: u16 = Self::SysReboot as u16;
38}
39
40impl TryFrom<u16> for SyscallTable {
41 type Error = ();
42 fn try_from(value: u16) -> Result<Self, Self::Error> {
43 if value <= Self::MAX {
44 Ok(unsafe { core::mem::transmute(value) })
45 } else {
46 Err(())
47 }
48 }
49}