os/mm/memory_space/
mmap_file.rs

1//! mmap 文件映射信息
2
3use crate::uapi::mm::{MapFlags, ProtFlags};
4use crate::vfs::File;
5use alloc::sync::Arc;
6
7/// 文件映射信息
8pub struct MmapFile {
9    /// 文件对象引用(用于权限检查和获取 Inode)
10    pub file: Arc<dyn File>,
11    /// 文件偏移量(字节)
12    pub offset: usize,
13    /// 映射长度(字节)
14    pub len: usize,
15    /// 保护标志
16    pub prot: ProtFlags,
17    /// 映射标志
18    pub flags: MapFlags,
19}
20
21// 手动实现 Debug,因为 dyn File 没有实现 Debug
22impl core::fmt::Debug for MmapFile {
23    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
24        f.debug_struct("MmapFile")
25            .field("file", &"<dyn File>")
26            .field("offset", &self.offset)
27            .field("len", &self.len)
28            .field("prot", &self.prot)
29            .field("flags", &self.flags)
30            .finish()
31    }
32}