1use crate::exchange;
6use crate::systypes::*;
7
8#[unsafe(no_mangle)]
10pub extern "C" fn __sys_get_process_handle(process: TaskLabel) -> Status {
11 crate::syscall::get_process_handle(process)
12}
13
14#[unsafe(no_mangle)]
16pub extern "C" fn __sys_exit(status: i32) -> Status {
17 crate::syscall::exit(status)
18}
19
20#[unsafe(no_mangle)]
22pub extern "C" fn __sys_get_shm_handle(shm: ShmLabel) -> Status {
23 crate::syscall::get_shm_handle(shm)
24}
25
26#[unsafe(no_mangle)]
28pub extern "C" fn __sys_get_dma_stream_handle(stream: StreamLabel) -> Status {
29 crate::syscall::get_dma_stream_handle(stream)
30}
31
32#[unsafe(no_mangle)]
34pub extern "C" fn __sys_sched_yield() -> Status {
35 crate::syscall::sched_yield()
36}
37
38#[unsafe(no_mangle)]
40pub extern "C" fn __sys_sleep(duration_ms: SleepDuration, mode: SleepMode) -> Status {
41 crate::syscall::sleep(duration_ms, mode)
42}
43
44#[unsafe(no_mangle)]
46pub extern "C" fn __sys_start(process: TaskLabel) -> Status {
47 crate::syscall::start(process)
48}
49
50#[unsafe(no_mangle)]
52pub extern "C" fn __sys_map_dev(dev: DeviceHandle) -> Status {
53 crate::syscall::map_dev(dev as DeviceHandle)
54}
55
56#[unsafe(no_mangle)]
58pub extern "C" fn __sys_map_shm(shm: ShmHandle) -> Status {
59 crate::syscall::map_shm(shm as ShmHandle)
60}
61
62#[unsafe(no_mangle)]
64pub extern "C" fn __sys_unmap_dev(dev: DeviceHandle) -> Status {
65 crate::syscall::unmap_dev(dev as DeviceHandle)
66}
67
68#[unsafe(no_mangle)]
70pub extern "C" fn __sys_unmap_shm(shm: ShmHandle) -> Status {
71 crate::syscall::unmap_shm(shm as ShmHandle)
72}
73
74#[unsafe(no_mangle)]
76pub extern "C" fn __sys_shm_set_credential(
77 shm: ShmHandle,
78 id: TaskHandle,
79 shm_perm: u32,
80) -> Status {
81 crate::syscall::shm_set_credential(shm, id, shm_perm)
82}
83
84#[unsafe(no_mangle)]
86pub extern "C" fn __sys_send_ipc(target: TaskHandle, length: u8) -> Status {
87 crate::syscall::send_ipc(target, length)
88}
89
90#[unsafe(no_mangle)]
92pub extern "C" fn __sys_send_signal(resource: u32, signal_type: Signal) -> Status {
93 crate::syscall::send_signal(resource, signal_type)
94}
95
96#[unsafe(no_mangle)]
98pub extern "C" fn __sys_gpio_get(resource: u32, io: u8) -> Status {
99 crate::syscall::gpio_get(resource, io)
100}
101
102#[unsafe(no_mangle)]
104pub extern "C" fn __sys_gpio_set(resource: u32, io: u8, val: bool) -> Status {
105 crate::syscall::gpio_set(resource, io, val)
106}
107
108#[unsafe(no_mangle)]
110pub extern "C" fn __sys_gpio_reset(resource: u32, io: u8) -> Status {
111 crate::syscall::gpio_reset(resource, io)
112}
113
114#[unsafe(no_mangle)]
116pub extern "C" fn __sys_gpio_toggle(resource: u32, io: u8) -> Status {
117 crate::syscall::gpio_toggle(resource, io)
118}
119
120#[unsafe(no_mangle)]
122pub extern "C" fn __sys_gpio_configure(resource: u32, io: u8) -> Status {
123 crate::syscall::gpio_configure(resource, io)
124}
125
126#[unsafe(no_mangle)]
128pub extern "C" fn __sys_get_device_handle(devlabel: u8) -> Status {
129 crate::syscall::get_device_handle(devlabel)
130}
131
132#[unsafe(no_mangle)]
134pub extern "C" fn __sys_irq_acknowledge(irq: u16) -> Status {
135 crate::syscall::irq_acknowledge(irq)
136}
137
138#[unsafe(no_mangle)]
140pub extern "C" fn __sys_irq_enable(irq: u16) -> Status {
141 crate::syscall::irq_enable(irq)
142}
143
144#[unsafe(no_mangle)]
146pub extern "C" fn __sys_irq_disable(irq: u16) -> Status {
147 crate::syscall::irq_disable(irq)
148}
149
150#[unsafe(no_mangle)]
152pub extern "C" fn __sys_wait_for_event(mask: u8, timeout: i32) -> Status {
153 crate::syscall::wait_for_event(mask, timeout)
154}
155
156#[unsafe(no_mangle)]
158pub extern "C" fn __sys_pm_manage(mode: CPUSleep) -> Status {
159 crate::syscall::pm_manage(mode)
160}
161
162#[unsafe(no_mangle)]
164pub extern "C" fn __sys_alarm(timeout_ms: u32, flag: AlarmFlag) -> Status {
165 crate::syscall::alarm(timeout_ms, flag)
166}
167
168#[unsafe(no_mangle)]
170pub extern "C" fn __sys_log(length: usize) -> Status {
171 crate::syscall::log(length)
172}
173
174#[unsafe(no_mangle)]
176pub extern "C" fn __sys_get_random() -> Status {
177 crate::syscall::get_random()
178}
179
180#[unsafe(no_mangle)]
182pub extern "C" fn __sys_get_cycle(precision: Precision) -> Status {
183 crate::syscall::get_cycle(precision)
184}
185
186#[unsafe(no_mangle)]
188pub extern "C" fn __sys_pm_set_clock(clk_reg: u32, clkmsk: u32, val: u32) -> Status {
189 crate::syscall::pm_set_clock(clk_reg, clkmsk, val)
190}
191
192#[unsafe(no_mangle)]
194pub extern "C" fn __sys_dma_start_stream(dmah: StreamHandle) -> Status {
195 crate::syscall::dma_start_stream(dmah)
196}
197
198#[unsafe(no_mangle)]
200pub extern "C" fn __sys_dma_suspend_stream(dmah: StreamHandle) -> Status {
201 crate::syscall::dma_suspend_stream(dmah)
202}
203
204#[unsafe(no_mangle)]
206pub extern "C" fn __sys_dma_get_stream_status(dmah: StreamHandle) -> Status {
207 crate::syscall::dma_get_stream_status(dmah)
208}
209
210#[unsafe(no_mangle)]
212pub extern "C" fn __sys_shm_get_infos(shm: ShmHandle) -> Status {
213 crate::syscall::shm_get_infos(shm)
214}
215
216#[unsafe(no_mangle)]
218pub extern "C" fn __sys_dma_assign_stream(dmah: StreamHandle) -> Status {
219 crate::syscall::dma_assign_stream(dmah)
220}
221
222#[unsafe(no_mangle)]
224pub extern "C" fn __sys_dma_unassign_stream(dmah: StreamHandle) -> Status {
225 crate::syscall::dma_unassign_stream(dmah)
226}
227
228#[unsafe(no_mangle)]
230pub extern "C" fn __sys_dma_get_stream_info(dmah: StreamHandle) -> Status {
231 crate::syscall::dma_get_stream_info(dmah)
232}
233
234#[unsafe(no_mangle)]
236pub extern "C" fn __sys_dma_resume_stream(dmah: StreamHandle) -> Status {
237 crate::syscall::dma_resume_stream(dmah)
238}
239
240#[cfg(CONFIG_BUILD_TARGET_AUTOTEST)]
242#[unsafe(no_mangle)]
243pub extern "C" fn __sys_autotest_set_capa(capa: u32) -> Status {
244 crate::syscall::autotest_set_capa(capa)
245}
246
247#[cfg(CONFIG_BUILD_TARGET_AUTOTEST)]
249#[unsafe(no_mangle)]
250pub extern "C" fn __sys_autotest_clear_capa(capa: u32) -> Status {
251 crate::syscall::autotest_clear_capa(capa)
252}
253
254#[unsafe(no_mangle)]
258pub unsafe extern "C" fn copy_to_kernel(from: *mut u8, length: usize) -> Status {
259 let u8_slice: &[u8] = unsafe { core::slice::from_raw_parts(from, length) };
260 match exchange::copy_to_kernel(&u8_slice) {
261 Ok(_) => Status::Ok,
262 Err(err) => err,
263 }
264}
265
266#[unsafe(no_mangle)]
270pub unsafe extern "C" fn copy_from_kernel(to: *mut u8, length: usize) -> Status {
271 let mut u8_slice: &mut [u8] =
272 unsafe { core::slice::from_raw_parts_mut(to, length) as &mut [u8] };
273 match exchange::copy_from_kernel(&mut u8_slice) {
274 Ok(_) => Status::Ok,
275 Err(err) => err,
276 }
277}