moved the Rc<RefCell<>> back into FatFs

This commit is contained in:
Moritz Gmeiner 2025-07-31 01:07:01 +02:00
commit f708ab0b50
5 changed files with 15 additions and 4 deletions

View file

@ -236,6 +236,7 @@ impl Bpb {
if self.fat_type() == FatType::Fat32 { if self.fat_type() == FatType::Fat32 {
return None; return None;
} }
Some(self.fat_offset() + self.sector_to_offset(self.num_fats() as u32 * self.fat_size())) Some(self.fat_offset() + self.sector_to_offset(self.num_fats() as u32 * self.fat_size()))
} }

View file

@ -98,8 +98,15 @@ pub struct FatFs {
fat: fat::Fat, fat: fat::Fat,
} }
unsafe impl Send for FatFs {}
impl FatFs { impl FatFs {
pub fn load(data: Rc<RefCell<dyn SliceLike>>) -> anyhow::Result<FatFs> { pub fn load<S>(data: S) -> anyhow::Result<FatFs>
where
S: SliceLike + Send + 'static,
{
let data = Rc::new(RefCell::new(data));
let mut bpb_bytes = [0; 512]; let mut bpb_bytes = [0; 512];
data.borrow_mut().read_at_offset(0, &mut bpb_bytes)?; data.borrow_mut().read_at_offset(0, &mut bpb_bytes)?;

View file

@ -22,7 +22,7 @@ pub fn main() -> anyhow::Result<()> {
// println!("{}", bpb); // println!("{}", bpb);
let fat_fs = FatFs::load(Rc::new(RefCell::new(file)))?; let fat_fs = FatFs::load(file)?;
println!("{}", fat_fs.bpb()); println!("{}", fat_fs.bpb());
println!(); println!();

View file

@ -26,7 +26,10 @@ pub struct FatFuse {
} }
impl FatFuse { impl FatFuse {
pub fn new(data: Rc<RefCell<dyn SliceLike>>) -> anyhow::Result<FatFuse> { pub fn new<S>(data: S) -> anyhow::Result<FatFuse>
where
S: SliceLike + Send + 'static,
{
let uid = unsafe { libc::getuid() }; let uid = unsafe { libc::getuid() };
let gid = unsafe { libc::getgid() }; let gid = unsafe { libc::getgid() };

View file

@ -15,7 +15,7 @@ fn main() -> anyhow::Result<()> {
let file = File::open(path)?; let file = File::open(path)?;
let fat_fuse = FatFuse::new(Rc::new(RefCell::new(file)))?; let fat_fuse = FatFuse::new(file)?;
let options = vec![ let options = vec![
MountOption::RO, MountOption::RO,