4个版本
使用旧的Rust 2015
0.2.1 | 2023年7月7日 |
---|---|
0.2.0 | 2019年3月7日 |
0.1.1 | 2016年6月15日 |
0.1.0 | 2016年5月27日 |
#475 在 硬件支持
2,297 每月下载量
12KB
235 行
Linux UIO库,用于Rust
一个薄的抽象库,用于通过使用UIO功能在Linux中编写用户空间驱动程序(《https://www.kernel.org/doc/html/latest/driver-api/uio-howto.html》)。
为了使用此库,您需要确保您的设备使用Linux UIO驱动模块。例如,以下示例命令在Linux中卸载ahci驱动程序并使用uio_pci_generic
模块为具有供应商ID 0x8086
和设备ID 0x1d02
的PCI设备提供SSD磁盘。(注意:危险,如果您不知道自己在做什么,请不要这样做)。
$ modprobe -r ahci
$ sudo modprobe uio
$ sudo modprobe uio_pci_generic
$ echo "0x8086 0x1d02" > /sys/bus/pci/drivers/uio_pci_generic/new_id
$ lspci -v -d :0x1d02 | grep "Kernel driver in use"
之后,您应该在/dev/uio*
中有可用的一个或多个uio设备,您可以用来实例化UioDevice结构体
extern crate uio;
use uio::*;
pub fn main() {
let uio_num = 1; // /dev/uio1
let dev = UioDevice::new(uio_num).unwrap();
let bar = dev.map_resource(5).unwrap();
}
资源
有关UIO的更多信息,请查看以下链接
- https://lwn.net/Articles/232575/
- http://alvarom.com/2014/12/17/linux-user-space-drivers-with-interrupts/
- http://lxr.free-electrons.com/source/drivers/uio/uio_cif.c
- https://www.kernel.org/doc/html/latest/driver-api/uio-howto.html
- http://lxr.free-electrons.com/source/drivers/uio/uio_dmem_genirq.c
- http://www.osadl.org/projects/downloads/UIO/user/
- http://dpdk.org/browse/dpdk/tree/tools/dpdk_nic_bind.py
依赖关系
~2MB
~36K SLoC