我想实现 XDP_SHARED_UMEM:https ://www.kernel.org/doc/html/latest/networking/af_xdp.html#xdp-shared-umem-bind-flag
库libbpf
函数xsk_socket__create
( https://github.com/libbpf/libbpf/blob/master/src/xsk.c ) 检查该xsk_umem->refcount
值。如果它大于 1,则设置XDP_SHARED_UMEM
a 的选项struct sockaddr_xdp
。
因此,据我正确理解,我“只”需要传递要与之共享 umem 的套接字的原始 umem 结构,其余的由libbpf
.
我尝试这样做的方法是让第一个进程将其umem
-struct 复制到第二个进程可以从中加载它的共享内存区域。但是因为它struct xsk_umem
被定义在xsk.c
用户面前是隐藏的,所以我不能做这样的事情:
memcpy(shdm_ptr, umem, sizeof(struct xsk_umem))
我不知道他们如何期望有人使用共享的 umem 功能?