如何计算BPF辅助函数的返回码含义?

时间:2019-04-04 22:19:33

标签: linux linux-kernel bpf ebpf

我正在编写一个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 */

这是查找错误含义的正确方法吗?如果是这样,说明的含义是什么?

1 个答案:

答案 0 :(得分:1)

错误是来自EOPNOTSUPPhere。这是由于尝试添加套接字时套接字未“满”引起的(即TCP连接must be established)。