components/
syscall_return_test.rs1use core::mem::MaybeUninit;
10use kernel::capabilities::MemoryAllocationCapability;
11use kernel::component::Component;
12
13#[macro_export]
14macro_rules! syscall_return_test_component_static {
15 () => {{ kernel::static_buf!(capsules_extra::syscall_return_test::SyscallReturnTest) }};
16}
17
18pub type SyscallReturnTestComponentType = capsules_extra::syscall_return_test::SyscallReturnTest;
19
20pub struct SyscallReturnTestComponent<CAP: MemoryAllocationCapability + 'static> {
21 board_kernel: &'static kernel::Kernel,
22 driver_num: usize,
23 mem_cap: CAP,
24}
25
26impl<CAP: MemoryAllocationCapability + 'static> SyscallReturnTestComponent<CAP> {
27 pub fn new(board_kernel: &'static kernel::Kernel, driver_num: usize, mem_cap: CAP) -> Self {
28 Self {
29 board_kernel,
30 driver_num,
31 mem_cap,
32 }
33 }
34}
35
36impl<CAP: MemoryAllocationCapability + 'static> Component for SyscallReturnTestComponent<CAP> {
37 type StaticInput =
38 &'static mut MaybeUninit<capsules_extra::syscall_return_test::SyscallReturnTest>;
39 type Output = &'static capsules_extra::syscall_return_test::SyscallReturnTest;
40
41 fn finalize(self, s: Self::StaticInput) -> Self::Output {
42 let grant = self
43 .board_kernel
44 .create_grant(self.driver_num, &self.mem_cap);
45 s.write(capsules_extra::syscall_return_test::SyscallReturnTest::new(
46 grant,
47 ))
48 }
49}