首页 > 解决方案 > 如何计算 BPF 辅助函数的返回码的含义?

问题描述

我正在编写一个BPF_PROG_TYPE_SOCKET_OPS程序,我看到以下内容/sys/kernel/debug/tracing/trace_pipe

<...>-12586 [001] ....  6972.409111: 0: update err: -95

当我由于以下代码段加载它时:

ret = bpf_sock_map_update(ops, &sock_ops, &idx, BPF_ANY);
if (ret < 0) {
    bpf_debug("update err: %d\n", ret);
}

我怎样才能弄清楚-95是什么意思?当我查看https://elixir.bootlin.com/linux/latest/source/arch/alpha/include/uapi/asm/errno.h时,我看到:

#define ENOCSI      95  /* No CSI structure available */

这是找到错误含义的正确方法吗?如果是这样,描述的含义是什么?

标签: linuxlinux-kernelbpfebpf

解决方案


错误是这里EOPNOTSUPP。这是由于尝试添加套接字时套接字未“满”(即必须建立TCP 连接)造成的。


推荐阅读