starnix_syscalls/
syscall_result.rs1use starnix_uapi::file_lease::FileLeaseType;
6use starnix_uapi::file_mode::FileMode;
7use starnix_uapi::open_flags::OpenFlags;
8use starnix_uapi::seal_flags::SealFlags;
9use starnix_uapi::signals::Signal;
10use starnix_uapi::user_address::UserAddress;
11
12#[derive(Eq, PartialEq, Debug)]
13pub struct SyscallResult(u64);
14pub const SUCCESS: SyscallResult = SyscallResult(0);
15
16impl SyscallResult {
17 pub fn value(&self) -> u64 {
18 self.0
19 }
20}
21
22impl From<UserAddress> for SyscallResult {
23 fn from(value: UserAddress) -> Self {
24 SyscallResult(value.ptr() as u64)
25 }
26}
27
28impl From<FileMode> for SyscallResult {
29 fn from(value: FileMode) -> Self {
30 SyscallResult(value.bits() as u64)
31 }
32}
33
34impl From<SealFlags> for SyscallResult {
35 fn from(value: SealFlags) -> Self {
36 SyscallResult(value.bits() as u64)
37 }
38}
39
40impl From<OpenFlags> for SyscallResult {
41 fn from(value: OpenFlags) -> Self {
42 SyscallResult(value.bits() as u64)
43 }
44}
45
46impl From<Signal> for SyscallResult {
47 fn from(value: Signal) -> Self {
48 SyscallResult(value.number() as u64)
49 }
50}
51
52impl From<FileLeaseType> for SyscallResult {
53 fn from(value: FileLeaseType) -> Self {
54 SyscallResult(value.bits() as u64)
55 }
56}
57
58impl From<bool> for SyscallResult {
59 fn from(value: bool) -> Self {
60 #[allow(clippy::bool_to_int_with_if)]
61 SyscallResult(if value { 1 } else { 0 })
62 }
63}
64
65impl From<u8> for SyscallResult {
66 fn from(value: u8) -> Self {
67 SyscallResult(value as u64)
68 }
69}
70
71impl From<i32> for SyscallResult {
72 fn from(value: i32) -> Self {
73 SyscallResult(value as u64)
74 }
75}
76
77impl From<u32> for SyscallResult {
78 fn from(value: u32) -> Self {
79 SyscallResult(value as u64)
80 }
81}
82
83impl From<i64> for SyscallResult {
84 fn from(value: i64) -> Self {
85 SyscallResult(value as u64)
86 }
87}
88
89impl From<u64> for SyscallResult {
90 fn from(value: u64) -> Self {
91 SyscallResult(value)
92 }
93}
94
95impl From<usize> for SyscallResult {
96 fn from(value: usize) -> Self {
97 SyscallResult(value as u64)
98 }
99}
100
101impl From<()> for SyscallResult {
102 fn from(_value: ()) -> Self {
103 SyscallResult(0)
104 }
105}