--- include/uapi/linux/bpf.h | 58 +++++++++++++++++++++++----------------- 1 file changed, 33 insertions(+), 25 deletions(-) diff --git a/include/uapi/linux/bpf.h b/include/uapi/linux/bpf.h index 6fc59d61937a..78b532d28761 100644 --- a/include/uapi/linux/bpf.h +++ b/include/uapi/linux/bpf.h @@ -50,7 +50,7 @@ #define BPF_CMPXCHG (0xf0 | BPF_FETCH) /* atomic compare-and-write */ /* Register numbers */ -enum { +enum bpf_reg { BPF_REG_0 = 0, BPF_REG_1, BPF_REG_2, @@ -1056,16 +1056,19 @@ enum bpf_link_type { * All eligible programs are executed regardless of return code from * earlier programs. */ -#define BPF_F_ALLOW_OVERRIDE (1U << 0) -#define BPF_F_ALLOW_MULTI (1U << 1) -#define BPF_F_REPLACE (1U << 2) +enum bpf_prog_attach_flag { + BPF_F_ALLOW_OVERRIDE = (1U << 0), + BPF_F_ALLOW_MULTI = (1U << 1), + BPF_F_REPLACE = (1U << 2), +}; +enum bpf_prog_load_flag { /* If BPF_F_STRICT_ALIGNMENT is used in BPF_PROG_LOAD command, the * verifier will perform strict alignment checking as if the kernel * has been built with CONFIG_EFFICIENT_UNALIGNED_ACCESS not set, * and NET_IP_ALIGN defined to 2. */ -#define BPF_F_STRICT_ALIGNMENT (1U << 0) + BPF_F_STRICT_ALIGNMENT = (1U << 0), /* If BPF_F_ANY_ALIGNMENT is used in BPF_PROF_LOAD command, the * verifier will allow any alignment whatsoever. On platforms @@ -1079,7 +1082,7 @@ enum bpf_link_type { * of an unaligned access the alignment check would trigger before * the one we are interested in. */ -#define BPF_F_ANY_ALIGNMENT (1U << 1) + BPF_F_ANY_ALIGNMENT = (1U << 1), /* BPF_F_TEST_RND_HI32 is used in BPF_PROG_LOAD command for testing purpose. * Verifier does sub-register def/use analysis and identifies instructions whose @@ -1097,10 +1100,10 @@ enum bpf_link_type { * Then, if verifier is not doing correct analysis, such randomization will * regress tests to expose bugs. */ -#define BPF_F_TEST_RND_HI32 (1U << 2) + BPF_F_TEST_RND_HI32 = (1U << 2), /* The verifier internal test flag. Behavior is undefined */ -#define BPF_F_TEST_STATE_FREQ (1U << 3) + BPF_F_TEST_STATE_FREQ = (1U << 3), /* If BPF_F_SLEEPABLE is used in BPF_PROG_LOAD command, the verifier will * restrict map and helper usage for such programs. Sleepable BPF programs can @@ -1108,8 +1111,10 @@ enum bpf_link_type { * Such programs are allowed to use helpers that may sleep like * bpf_copy_from_user(). */ -#define BPF_F_SLEEPABLE (1U << 4) + BPF_F_SLEEPABLE = (1U << 4), +}; +enum bpf_pseudo_src_reg { /* When BPF ldimm64's insn[0].src_reg != 0 then this can have * the following extensions: * @@ -1121,8 +1126,8 @@ enum bpf_link_type { * ldimm64 rewrite: address of map * verifier type: CONST_PTR_TO_MAP */ -#define BPF_PSEUDO_MAP_FD 1 -#define BPF_PSEUDO_MAP_IDX 5 + BPF_PSEUDO_MAP_FD = 1, + BPF_PSEUDO_MAP_IDX = 5, /* insn[0].src_reg: BPF_PSEUDO_MAP_[IDX_]VALUE * insn[0].imm: map fd or fd_idx @@ -1132,8 +1137,8 @@ enum bpf_link_type { * ldimm64 rewrite: address of map[0]+offset * verifier type: PTR_TO_MAP_VALUE */ -#define BPF_PSEUDO_MAP_VALUE 2 -#define BPF_PSEUDO_MAP_IDX_VALUE 6 + BPF_PSEUDO_MAP_VALUE = 2, + BPF_PSEUDO_MAP_IDX_VALUE = 6, /* insn[0].src_reg: BPF_PSEUDO_BTF_ID * insn[0].imm: kernel btd id of VAR @@ -1144,7 +1149,7 @@ enum bpf_link_type { * verifier type: PTR_TO_BTF_ID or PTR_TO_MEM, depending on whether the var * is struct/union. */ -#define BPF_PSEUDO_BTF_ID 3 + BPF_PSEUDO_BTF_ID = 3, /* insn[0].src_reg: BPF_PSEUDO_FUNC * insn[0].imm: insn offset to the func * insn[1].imm: 0 @@ -1153,19 +1158,20 @@ enum bpf_link_type { * ldimm64 rewrite: address of the function * verifier type: PTR_TO_FUNC. */ -#define BPF_PSEUDO_FUNC 4 + BPF_PSEUDO_FUNC = 4, /* when bpf_call->src_reg == BPF_PSEUDO_CALL, bpf_call->imm == pc-relative * offset to another bpf function */ -#define BPF_PSEUDO_CALL 1 + BPF_PSEUDO_CALL = 1, /* when bpf_call->src_reg == BPF_PSEUDO_KFUNC_CALL, * bpf_call->imm == btf_id of a BTF_KIND_FUNC in the running kernel */ -#define BPF_PSEUDO_KFUNC_CALL 2 + BPF_PSEUDO_KFUNC_CALL = 2, +}; /* flags for BPF_MAP_UPDATE_ELEM command */ -enum { +enum bpf_map_update_elem_flag { BPF_ANY = 0, /* create new element or update existing */ BPF_NOEXIST = 1, /* create new element if it didn't exist */ BPF_EXIST = 2, /* update existing element */ @@ -1173,7 +1179,7 @@ enum { }; /* flags for BPF_MAP_CREATE command */ -enum { +enum bpf_map_create_flag { BPF_F_NO_PREALLOC = (1U << 0), /* Instead of having one common LRU list in the * BPF_MAP_TYPE_LRU_[PERCPU_]HASH map, use a percpu LRU list @@ -1213,17 +1219,19 @@ enum { }; /* Flags for BPF_PROG_QUERY. */ - +enum bpf_prog_query_flag { /* Query effective (directly attached + inherited from ancestor cgroups) * programs that will be executed for events within a cgroup. * attach_flags with this flag are returned only for directly attached programs. */ -#define BPF_F_QUERY_EFFECTIVE (1U << 0) - -/* Flags for BPF_PROG_TEST_RUN */ + BPF_F_QUERY_EFFECTIVE = (1U << 0), +}; +/* Flags for BPF_PROG_RUN */ +enum bpf_prog_run_flag { /* If set, run the test on the cpu specified by bpf_attr.test.cpu */ -#define BPF_F_TEST_RUN_ON_CPU (1U << 0) + BPF_F_TEST_RUN_ON_CPU = (1U << 0), +}; /* type for BPF_ENABLE_STATS */ enum bpf_stats_type { @@ -5230,7 +5238,7 @@ enum { }; /* BPF ring buffer constants */ -enum { +enum bpf_ringbuf_const { BPF_RINGBUF_BUSY_BIT = (1U << 31), BPF_RINGBUF_DISCARD_BIT = (1U << 30), BPF_RINGBUF_HDR_SZ = 8, -- 2.30.2