如何在网卡和以太网驱动程序之间进行通信?

时间:2017-04-20 04:36:19

标签: rust driver ethernet ioports

我正在尝试在Rust中构建一个unikernel,它将启动并启动一个Web服务器。我正在使用 Qemu 进行测试。

到目前为止,我已经设法编写了一个操作系统,通过在线和github上的各种博客来启用分段,分页和中断。内核已启动并运行,如果明确调用类型int 32的中断,则能够检测到软件中断以及硬件中断。 在此之后,我启用了IO端口并实现了所有端口I / O功能,如inboutbinloutlinw,{{1}这有助于我读写端口。我在某处读到这是驱动程序和设备之间的通信方式。使用这些我使用探测方法来检测外围设备。在qemu中,检测到3个设备。

其中一个设备为outw,设备ID为Intel 82540EM Ethernet Controller,供应商ID为0x100e。我正在尝试与此驱动程序通信以实现将完成我的项目的数据包的传输和接收。我知道网卡和驱动程序之间发生的所有通信都是通过设备的IO端口进行的。

但是,我无法清楚地了解背景中会发生什么。所以,有人可以解释我 - 我们如何检测到某些新数据包已到达网卡?

0 个答案:

没有答案