这个问题在这里已有答案:
这条线是什么意思:
[0 ... 255] = &&default_label
在定义中:
static const void *jumptable[256] = {
[0 ... 255] = &&default_label,
/* Now overwrite non-defaults ... */
/* 32 bit ALU operations */
[BPF_ALU | BPF_ADD | BPF_X] = &&ALU_ADD_X,
…
};
http://lxr.devzen.net/source/xref/linux-4.8.15/kernel/bpf/core.c#473
[0 ... 255]
表示法是designated initializer语法的GCC扩展(标准C中非常需要)。它通过数组(0
值)的255
将元素void *
设置为address of the label default_label
(另一个GCC语法扩展,但这是标准C中不需要的那个)。