components/storage_permissions/
individual.rs1use core::mem::MaybeUninit;
17use kernel::capabilities;
18use kernel::component::Component;
19use kernel::platform::chip::Chip;
20use kernel::process::ProcessStandardDebug;
21
22#[macro_export]
23macro_rules! storage_permissions_individual_component_static {
24 ($C:ty, $D:ty $(,)?) => {{
25 kernel::static_buf!(
26 capsules_system::storage_permissions::individual::IndividualStoragePermissions<
27 $C,
28 $D,
29 components::storage_permissions::individual::AppStoreCapability
30 >
31 )
32 };};
33}
34
35pub struct AppStoreCapability;
36unsafe impl capabilities::ApplicationStorageCapability for AppStoreCapability {}
37
38pub type StoragePermissionsIndividualComponentType<C, D> =
39 capsules_system::storage_permissions::individual::IndividualStoragePermissions<
40 C,
41 D,
42 AppStoreCapability,
43 >;
44
45pub struct StoragePermissionsIndividualComponent<C: Chip, D: ProcessStandardDebug> {
46 _chip: core::marker::PhantomData<C>,
47 _debug: core::marker::PhantomData<D>,
48}
49
50impl<C: Chip, D: ProcessStandardDebug> StoragePermissionsIndividualComponent<C, D> {
51 pub fn new() -> Self {
52 Self {
53 _chip: core::marker::PhantomData,
54 _debug: core::marker::PhantomData,
55 }
56 }
57}
58
59impl<C: Chip + 'static, D: ProcessStandardDebug + 'static> Component
60 for StoragePermissionsIndividualComponent<C, D>
61{
62 type StaticInput = &'static mut MaybeUninit<
63 capsules_system::storage_permissions::individual::IndividualStoragePermissions<
64 C,
65 D,
66 AppStoreCapability,
67 >,
68 >;
69 type Output =
70 &'static capsules_system::storage_permissions::individual::IndividualStoragePermissions<
71 C,
72 D,
73 AppStoreCapability,
74 >;
75
76 fn finalize(self, s: Self::StaticInput) -> Self::Output {
77 s.write(
78 capsules_system::storage_permissions::individual::IndividualStoragePermissions::new(
79 AppStoreCapability,
80 ),
81 )
82 }
83}