Skip to main content

Crate zenith_linux

Crate zenith_linux 

Source
Expand description

Zenith Linux - Linux 平台抽象层

本 crate 提供 Linux 平台特有的系统抽象,包括:

  • AF_XDP Socket 管理与零拷贝数据通路
  • UMEM 内存管理(mmap、锁页、HugePage)
  • 四环操作封装(Fill/RX/TX/Completion)
  • 描述符安全校验引擎与事务化所有权迁移
  • 系统调用封装与能力探测

§架构原则

  1. 上层接口零 unsafe,所有 unsafe 封装在本 crate 内部
  2. 单队列单 Owner,无锁、无共享、无阻塞
  3. 预分配优先,热路径零堆分配
  4. 描述符全生命周期追踪,守恒等式恒成立

§unsafe 使用

crate 顶层 #![deny(unsafe_code)](与 workspace lint 一致),unsafe 仅 在以下位置精确放开,绝不 crate 级全开:

  • 本文件 page_size() / get_kernel_version():libc FFI 的安全封装, 以 item 级 #[allow(unsafe_code)] 精确放开;
  • affinity / netif / ring / syscalls / umem / xsk / io_uring(feature 门控) 七个模块:文件顶部 #![allow(unsafe_code)] + 模块文档说明 unsafe 不可 避免的原因(系统调用 / mmap 共享内存 / C 结构体 FFI)。

descriptor / error 模块不含任何 unsafe,不做任何放开。 所有 unsafe 块均附 SAFETY 注释。

Re-exports§

pub use affinity::online_cpu_count;
pub use affinity::set_thread_affinity;
pub use affinity::set_thread_affinity_range;
pub use affinity::AffinityError;
pub use descriptor::Descriptor;
pub use descriptor::DescriptorEngine;
pub use descriptor::DescriptorType;
pub use descriptor::XdpDesc;
pub use error::LinuxError;
pub use error::Result;
pub use netif::if_nametoindex;
pub use netif::NetIfError;
pub use ring::RingOffsets;
pub use ring::RingType;
pub use ring::XDP_RING_NEED_WAKEUP;
pub use ring::XskRing;
pub use syscalls::pipe2;
pub use syscalls::recvmmsg;
pub use syscalls::sendfile;
pub use syscalls::sendmmsg;
pub use syscalls::splice;
pub use syscalls::splice_bidirectional;
pub use syscalls::FdGuard;
pub use syscalls::SpliceFlags;
pub use syscalls::MAX_BATCH_DATAGRAMS;
pub use umem::UmemConfig;
pub use umem::UmemManager;
pub use xsk::XskConfig;
pub use xsk::XskSocket;
pub use xsk::XskState;

Modules§

affinity
线程 CPU 亲和性绑定(Linux 平台抽象)
descriptor
AF_XDP 描述符模块
error
Zenith Linux 错误类型
netif
网络接口抽象(Linux 平台)
ring
AF_XDP Ring 操作封装
syscalls
Linux 高性能零拷贝/批量系统调用封装
umem
UMEM 内存管理
xsk
AF_XDP Socket 管理

Structs§

LinuxPlatform
Linux 平台信息
PlatformCapabilities
平台能力集合

Functions§

init
初始化 Zenith Linux 平台
page_size
返回系统页面大小(字节)。