capsules_system/storage_permissions/
individual.rs1use kernel::capabilities::ApplicationStorageCapability;
6use kernel::platform::chip::Chip;
7use kernel::process::Process;
8use kernel::process::ShortId;
9use kernel::storage_permissions::StoragePermissions;
10
11pub struct IndividualStoragePermissions<
14 C: Chip,
15 D: kernel::process::ProcessStandardDebug,
16 CAP: ApplicationStorageCapability,
17> {
18 cap: CAP,
19 _chip: core::marker::PhantomData<C>,
20 _debug: core::marker::PhantomData<D>,
21}
22
23impl<C: Chip, D: kernel::process::ProcessStandardDebug, CAP: ApplicationStorageCapability>
24 IndividualStoragePermissions<C, D, CAP>
25{
26 pub fn new(cap: CAP) -> Self {
27 Self {
28 cap,
29 _chip: core::marker::PhantomData,
30 _debug: core::marker::PhantomData,
31 }
32 }
33}
34
35impl<C: Chip, D: kernel::process::ProcessStandardDebug, CAP: ApplicationStorageCapability>
36 kernel::process::ProcessStandardStoragePermissionsPolicy<C, D>
37 for IndividualStoragePermissions<C, D, CAP>
38{
39 fn get_permissions(
40 &self,
41 process: &kernel::process::ProcessStandard<C, D>,
42 ) -> StoragePermissions {
43 match process.short_app_id() {
46 ShortId::Fixed(id) => StoragePermissions::new_self_only(id, &self.cap),
47 ShortId::LocallyUnique => StoragePermissions::new_null(),
48 }
49 }
50}