From: Dmitry V. Levin Date: Wed, 13 Mar 2019 18:38:51 +0000 (+0000) Subject: bpf: implement decoding of BPF_MAP_LOOKUP_AND_DELETE_ELEM command X-Git-Tag: v5.0~15 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=0373ab459fd1cd25c1c702b1094e517543a52cc9;p=strace bpf: implement decoding of BPF_MAP_LOOKUP_AND_DELETE_ELEM command BPF_MAP_LOOKUP_AND_DELETE_ELEM command was introduced by Linux commit v4.20-rc1~151^2~32^2~11^2~2. * bpf.c (decode_BPF_MAP_LOOKUP_AND_DELETE_ELEM): Alias to decode_BPF_MAP_LOOKUP_ELEM. (SYS_FUNC(bpf)) : Add BPF_CMD_ENTRY(BPF_MAP_LOOKUP_AND_DELETE_ELEM). * tests/bpf.c (BPF_MAP_LOOKUP_AND_DELETE_ELEM_checks): Alias to BPF_MAP_LOOKUP_ELEM_checks. (main) : Add CHK(BPF_MAP_LOOKUP_AND_DELETE_ELEM). --- diff --git a/bpf.c b/bpf.c index 69c9a4f5..0bb02279 100644 --- a/bpf.c +++ b/bpf.c @@ -233,6 +233,8 @@ BEGIN_BPF_CMD_DECODER(BPF_MAP_LOOKUP_ELEM) } END_BPF_CMD_DECODER(RVAL_DECODED) +#define decode_BPF_MAP_LOOKUP_AND_DELETE_ELEM decode_BPF_MAP_LOOKUP_ELEM + BEGIN_BPF_CMD_DECODER(BPF_MAP_UPDATE_ELEM) { PRINT_FIELD_FD("{", attr, map_fd, tcp); @@ -866,6 +868,7 @@ SYS_FUNC(bpf) BPF_CMD_ENTRY(BPF_RAW_TRACEPOINT_OPEN), BPF_CMD_ENTRY(BPF_BTF_LOAD), BPF_CMD_ENTRY(BPF_BTF_GET_FD_BY_ID), + BPF_CMD_ENTRY(BPF_MAP_LOOKUP_AND_DELETE_ELEM), }; const unsigned int cmd = tcp->u_arg[0]; diff --git a/tests/bpf.c b/tests/bpf.c index 8f887fb0..5c04a825 100644 --- a/tests/bpf.c +++ b/tests/bpf.c @@ -441,6 +441,8 @@ static const struct bpf_attr_check BPF_MAP_LOOKUP_ELEM_checks[] = { } }; +#define BPF_MAP_LOOKUP_AND_DELETE_ELEM_checks BPF_MAP_LOOKUP_ELEM_checks + static const struct bpf_attr_check BPF_MAP_UPDATE_ELEM_checks[] = { { .data = { .BPF_MAP_UPDATE_ELEM_data = { .map_fd = -1 } }, @@ -1158,6 +1160,7 @@ main(void) CHK(BPF_RAW_TRACEPOINT_OPEN), CHK(BPF_BTF_LOAD), CHK(BPF_BTF_GET_FD_BY_ID), + CHK(BPF_MAP_LOOKUP_AND_DELETE_ELEM), }; page_size = get_page_size();