2

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->refcountXDP_SHARED_UMEMstruct sockaddr_xdp

したがって、私が正しく理解している限り、umem を共有したいソケットの元の umem 構造体を「ただ」渡す必要があり、残りは によって行われlibbpfます。

私が試みた方法は、最初のプロセスがそのumem構造体を共有メモリ領域にコピーし、そこから 2 番目のプロセスがロードできるようにすることでした。しかし、struct xsk_umemで定義されxsk.cているため、ユーザーから隠されているため、次のようなことはできません。

memcpy(shdm_ptr, umem, sizeof(struct xsk_umem))

誰かが共有 umem 機能をどのように使用することを彼らが期待しているのかわかりませんか?

4

1 に答える 1