gpt4 book ai didi

c - eBPF:理解验证器代码中的两个宏

转载 作者:行者123 更新时间:2023-12-02 08:10:37 24 4
gpt4 key购买 nike

我正在查看 ebpf 验证程序代码,但无法理解以下宏:

#define offsetof(TYPE, MEMBER)  ((size_t)&((TYPE *)0)->MEMBER)
#define offsetofend(TYPE, MEMBER) \
(offsetof(TYPE, MEMBER) + sizeof(((TYPE *)0)->MEMBER))

<...>

#define bpf_ctx_range(TYPE, MEMBER) \
offsetof(TYPE, MEMBER) ... offsetofend(TYPE, MEMBER) - 1
#define bpf_ctx_range_till(TYPE, MEMBER1, MEMBER2) \
offsetof(TYPE, MEMBER1) ... offsetofend(TYPE, MEMBER2) - 1

我理解 offsetofoffsetofend 宏,但是 ... 的含义是什么?

谢谢。

最佳答案

查看它在 filter.c 中的使用方式:

    case bpf_ctx_range(struct __sk_buff, data):

这是 GCC 的 case range 扩展(clang 也支持它)。有了它,单个 case 语句可以匹配一系列值,例如 case 0 ... 5:。这里有更多信息:

https://gcc.gnu.org/onlinedocs/gcc/Case-Ranges.html

关于c - eBPF:理解验证器代码中的两个宏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49011901/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com