pub struct UmemManager { /* private fields */ }Expand description
UMEM 管理器
管理 AF_XDP 所需的用户态内存区域。 提供 mmap、lock、HugePage 等功能。
Implementations§
Source§impl UmemManager
impl UmemManager
Sourcepub fn new(config: UmemConfig) -> Result<Self>
pub fn new(config: UmemConfig) -> Result<Self>
Sourcepub fn region(&self) -> Option<&UmemRegion>
pub fn region(&self) -> Option<&UmemRegion>
Sourcepub fn slice(&self, offset: usize, len: usize) -> Option<&[u8]>
pub fn slice(&self, offset: usize, len: usize) -> Option<&[u8]>
获取 UMEM 映射区的只读切片(checked 边界,越界返回 None)
用于真实 AF_XDP 模式:内核 DMA 将收包数据写入本映射区, 数据面经本方法零拷贝读取帧内容。
§安全
返回切片的生命周期绑定 &self;映射区所有权由 UmemManager 持有,
munmap 仅发生在 drop(调用方以 Arc<UmemManager> 保证使用期间存活)。
Sourcepub fn slice_mut(&self, offset: usize, len: usize) -> Option<&mut [u8]>
pub fn slice_mut(&self, offset: usize, len: usize) -> Option<&mut [u8]>
获取 UMEM 映射区的可变切片(checked 边界,越界返回 None)
用于真实 AF_XDP 模式的 TX 路径:出站帧内容写入本映射区后由内核发送。
§安全
接收 &self 借用并返回 &mut [u8],技术上违反 Rust 别名规则
(aliasing rules)。UMEM 为与内核共享的可变内存(mmap MAP_SHARED),
语义上等价于 UnsafeCell<[u8]>。调用方(单 Owner Worker)在数据面
单线程顺序访问,保证同一帧区域无并发活跃借用,满足 SAFETY 不变量。
§Safety
调用者必须确保同一帧区域不会被两个线程同时通过 slice_mut 获取可变引用。
UMEM 区域是 mmap 映射的共享内存,不由 Rust 所有权模型管理,
帧级别的互斥由 Fill Ring / Completion Ring 的单消费者语义保证。
Sourcepub fn page_offset(&self) -> u64
pub fn page_offset(&self) -> u64
Sourcepub fn is_initialized(&self) -> bool
pub fn is_initialized(&self) -> bool
Trait Implementations§
Source§impl Debug for UmemManager
impl Debug for UmemManager
Source§impl Drop for UmemManager
impl Drop for UmemManager
Auto Trait Implementations§
impl !Freeze for UmemManager
impl RefUnwindSafe for UmemManager
impl Send for UmemManager
impl Sync for UmemManager
impl Unpin for UmemManager
impl UnsafeUnpin for UmemManager
impl UnwindSafe for UmemManager
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more