1#![doc = include_str!("../README.md")]
4#![cfg_attr(not(any(test, feature = "std")), no_std)]
5#![deny(missing_docs)]
6#![allow(clippy::too_many_arguments)]
11
12extern crate alloc;
13extern crate core;
14
15use alloc::sync::Arc;
16
17pub use api::EntryType;
18use api::raw_directory_entry::{
19 Attributes, RegularDirectoryEntry, UnknownDirectoryEntry, VfatDirectoryEntry,
20};
21pub use api::{Directory, DirectoryEntry, Metadata, VfatMetadataTrait};
22pub(crate) use cache::CachedPartition;
23pub use error::{Result, VfatRsError};
24pub(crate) use formats::cluster_id::ClusterId;
25#[cfg(not(feature = "std"))]
26pub use formats::path::PathBuf;
27#[cfg(feature = "std")]
28pub use std::path::PathBuf;
29
30pub use formats::sector_id::SectorId;
31pub use vfat::VfatFS;
32
33mod api;
34mod cache;
35mod cluster;
36mod error;
38mod fat_table;
39#[cfg(feature = "std")]
40mod fileblockdevice;
41mod formats;
42pub mod io;
44mod macros;
45pub mod mbr;
47mod time;
48pub mod traits;
50mod vfat;
51
52const EBPF_VFAT_MAGIC: u8 = 0x28;
53const EBPF_VFAT_MAGIC_ALT: u8 = 0x29;
54
55pub const SECTOR_SIZE: usize = 512;
57
58type ArcMutex<CachedPartition> = Arc<CachedPartition>;
61
62#[cfg(feature = "std")]
63pub use time::TimeManagerChronos;
64pub use time::TimeManagerNoop;
65
66#[cfg(feature = "std")]
67pub use fileblockdevice::FilebackedBlockDevice;
68
69pub use traits::{BlockDevice, TimeManagerTrait};