uio提供了用户态驱动开发的框架,主要是由于驱动依赖的内核函数和宏因内核版本变化,导致驱动可能也需要改,所以改为用户态驱动来完成任务,这也算是类似windows的HAL的机制,当然HAL是硬件抽象层。
dpdk是如何与硬件交互的?
dpdk中的驱动需要定期去poll/select /dev/uioX 检查设备是否有中断产生,并不是用来收发数据,另外通过mmap来操作设备的设备内存。uio框架本身要处理设备的中断,中断只能在内核态处理,uio的中断处理函数也只是增加中断的计数而已。
mmap可以处理物理内存映射,逻辑内存,内核虚拟内存映射。
uio也是通过mmap将设备的内存映射到用户空间,当然用户态也可以通过/sys/class/uio/uioX/maps/mapX来实现对设备内存的访问,所以发送和接受数据是通过操作设备的内存来完成的。
阅读(8330) | 评论(0) | 转发(0) |