我有兴趣在 Linux 上的 C++ 应用程序中通过“总线主控”访问网络数据包。我对这个整体主题有几个问题:
1)我如何知道启用“总线主控”的网卡正在将数据写入哪个内存地址范围,这是内核空间还是用户空间?
2)如果#2是“内核空间”,我怎么能改变卡,让它写入用户空间的内存?
3a) 如何从 C++ 访问这个特定的用户空间内存区域?
3b)我知道你不能只从一个应用程序开始访问其他进程的内存区域,只有那些明确“共享”的内存区域 - 那么我如何确保网卡直接写入的内存区域明确用于共享?
4)如何知道网卡是否实现了“总线主控”?
我遇到了这个词PACKET_MMAP
——这会是我需要的吗?