Я хочу реализовать 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
параметр struct sockaddr_xdp
.
Так что, насколько я понимаю, мне просто нужно передать исходную структуру umem сокета I хочу поделиться с umem, а остальное делает libbpf
.
Я пытался сделать так, чтобы первый процесс скопировал свою umem
-структуру в область разделяемой памяти, где Второй процесс может загрузить его из. Но поскольку struct xsk_umem
определено в xsk.c
, оно скрыто от пользователя, и я не могу сделать что-то вроде этого:
memcpy(shdm_ptr, umem, sizeof(struct xsk_umem))
Я не знаю, как они ожидаете, что кто-то будет использовать функцию общего доступа umem?