XDP_SHARED_UMEM を実装したい: https://www.kernel.org/doc/html/latest/networking/af_xdp.html#xdp-shared-umem-bind-flag
libbpf
ライブラリ関数( https://github.com/libbpf/libbpf/blob/master/src/xsk.cxsk_socket__create
)が値をチェックします。1 より大きい場合、a のオプションが設定されます。xsk_umem->refcount
XDP_SHARED_UMEM
struct sockaddr_xdp
したがって、私が正しく理解している限り、umem を共有したいソケットの元の umem 構造体を「ただ」渡す必要があり、残りは によって行われlibbpf
ます。
私が試みた方法は、最初のプロセスがそのumem
構造体を共有メモリ領域にコピーし、そこから 2 番目のプロセスがロードできるようにすることでした。しかし、struct xsk_umem
で定義されxsk.c
ているため、ユーザーから隠されているため、次のようなことはできません。
memcpy(shdm_ptr, umem, sizeof(struct xsk_umem))
誰かが共有 umem 機能をどのように使用することを彼らが期待しているのかわかりませんか?