提交 c7c9aa2b 编写于 作者: A Alexei Starovoitov 提交者: Zheng Zengkai

selftests/bpf: Convert atomics test to light skeleton.

mainline inclusion
from mainline-5.14-rc1
commit 0a930662
category: feature
bugzilla: https://gitee.com/openeuler/kernel/issues/I5EUVD
CVE: NA

Reference: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=0a9306629983d0be384d4f2557c8c7e2ed086164

-------------------------------------------------

Convert prog_tests/atomics.c to lskel.h
Signed-off-by: NAlexei Starovoitov <ast@kernel.org>
Signed-off-by: NDaniel Borkmann <daniel@iogearbox.net>
Acked-by: NAndrii Nakryiko <andrii@kernel.org>
Link: https://lore.kernel.org/bpf/20210514003623.28033-20-alexei.starovoitov@gmail.com
(cherry picked from commit 0a930662)
Signed-off-by: NWang Yufen <wangyufen@huawei.com>

Conflicts:
	tools/testing/selftests/bpf/Makefile
Signed-off-by: NWang Yufen <wangyufen@huawei.com>
上级 fe27eb66
...@@ -298,7 +298,7 @@ SKEL_BLACKLIST := btf__% test_pinning_invalid.c test_sk_assign.c ...@@ -298,7 +298,7 @@ SKEL_BLACKLIST := btf__% test_pinning_invalid.c test_sk_assign.c
LINKED_SKELS := test_static_linked.skel.h LINKED_SKELS := test_static_linked.skel.h
LSKELS := kfunc_call_test.c fentry_test.c fexit_test.c \ LSKELS := kfunc_call_test.c fentry_test.c fexit_test.c \
test_ksyms_module.c test_ringbuf.c test_ksyms_module.c test_ringbuf.c atomics.c
SKEL_BLACKLIST += $$(LSKELS) SKEL_BLACKLIST += $$(LSKELS)
test_static_linked.skel.h-deps := test_static_linked1.o test_static_linked2.o test_static_linked.skel.h-deps := test_static_linked1.o test_static_linked2.o
......
...@@ -2,19 +2,19 @@ ...@@ -2,19 +2,19 @@
#include <test_progs.h> #include <test_progs.h>
#include "atomics.skel.h" #include "atomics.lskel.h"
static void test_add(struct atomics *skel) static void test_add(struct atomics *skel)
{ {
int err, prog_fd; int err, prog_fd;
__u32 duration = 0, retval; __u32 duration = 0, retval;
struct bpf_link *link; int link_fd;
link = bpf_program__attach(skel->progs.add); link_fd = atomics__add__attach(skel);
if (CHECK(IS_ERR(link), "attach(add)", "err: %ld\n", PTR_ERR(link))) if (!ASSERT_GT(link_fd, 0, "attach(add)"))
return; return;
prog_fd = bpf_program__fd(skel->progs.add); prog_fd = skel->progs.add.prog_fd;
err = bpf_prog_test_run(prog_fd, 1, NULL, 0, err = bpf_prog_test_run(prog_fd, 1, NULL, 0,
NULL, NULL, &retval, &duration); NULL, NULL, &retval, &duration);
if (CHECK(err || retval, "test_run add", if (CHECK(err || retval, "test_run add",
...@@ -33,20 +33,20 @@ static void test_add(struct atomics *skel) ...@@ -33,20 +33,20 @@ static void test_add(struct atomics *skel)
ASSERT_EQ(skel->data->add_noreturn_value, 3, "add_noreturn_value"); ASSERT_EQ(skel->data->add_noreturn_value, 3, "add_noreturn_value");
cleanup: cleanup:
bpf_link__destroy(link); close(link_fd);
} }
static void test_sub(struct atomics *skel) static void test_sub(struct atomics *skel)
{ {
int err, prog_fd; int err, prog_fd;
__u32 duration = 0, retval; __u32 duration = 0, retval;
struct bpf_link *link; int link_fd;
link = bpf_program__attach(skel->progs.sub); link_fd = atomics__sub__attach(skel);
if (CHECK(IS_ERR(link), "attach(sub)", "err: %ld\n", PTR_ERR(link))) if (!ASSERT_GT(link_fd, 0, "attach(sub)"))
return; return;
prog_fd = bpf_program__fd(skel->progs.sub); prog_fd = skel->progs.sub.prog_fd;
err = bpf_prog_test_run(prog_fd, 1, NULL, 0, err = bpf_prog_test_run(prog_fd, 1, NULL, 0,
NULL, NULL, &retval, &duration); NULL, NULL, &retval, &duration);
if (CHECK(err || retval, "test_run sub", if (CHECK(err || retval, "test_run sub",
...@@ -66,20 +66,20 @@ static void test_sub(struct atomics *skel) ...@@ -66,20 +66,20 @@ static void test_sub(struct atomics *skel)
ASSERT_EQ(skel->data->sub_noreturn_value, -1, "sub_noreturn_value"); ASSERT_EQ(skel->data->sub_noreturn_value, -1, "sub_noreturn_value");
cleanup: cleanup:
bpf_link__destroy(link); close(link_fd);
} }
static void test_and(struct atomics *skel) static void test_and(struct atomics *skel)
{ {
int err, prog_fd; int err, prog_fd;
__u32 duration = 0, retval; __u32 duration = 0, retval;
struct bpf_link *link; int link_fd;
link = bpf_program__attach(skel->progs.and); link_fd = atomics__and__attach(skel);
if (CHECK(IS_ERR(link), "attach(and)", "err: %ld\n", PTR_ERR(link))) if (!ASSERT_GT(link_fd, 0, "attach(and)"))
return; return;
prog_fd = bpf_program__fd(skel->progs.and); prog_fd = skel->progs.and.prog_fd;
err = bpf_prog_test_run(prog_fd, 1, NULL, 0, err = bpf_prog_test_run(prog_fd, 1, NULL, 0,
NULL, NULL, &retval, &duration); NULL, NULL, &retval, &duration);
if (CHECK(err || retval, "test_run and", if (CHECK(err || retval, "test_run and",
...@@ -94,20 +94,20 @@ static void test_and(struct atomics *skel) ...@@ -94,20 +94,20 @@ static void test_and(struct atomics *skel)
ASSERT_EQ(skel->data->and_noreturn_value, 0x010ull << 32, "and_noreturn_value"); ASSERT_EQ(skel->data->and_noreturn_value, 0x010ull << 32, "and_noreturn_value");
cleanup: cleanup:
bpf_link__destroy(link); close(link_fd);
} }
static void test_or(struct atomics *skel) static void test_or(struct atomics *skel)
{ {
int err, prog_fd; int err, prog_fd;
__u32 duration = 0, retval; __u32 duration = 0, retval;
struct bpf_link *link; int link_fd;
link = bpf_program__attach(skel->progs.or); link_fd = atomics__or__attach(skel);
if (CHECK(IS_ERR(link), "attach(or)", "err: %ld\n", PTR_ERR(link))) if (!ASSERT_GT(link_fd, 0, "attach(or)"))
return; return;
prog_fd = bpf_program__fd(skel->progs.or); prog_fd = skel->progs.or.prog_fd;
err = bpf_prog_test_run(prog_fd, 1, NULL, 0, err = bpf_prog_test_run(prog_fd, 1, NULL, 0,
NULL, NULL, &retval, &duration); NULL, NULL, &retval, &duration);
if (CHECK(err || retval, "test_run or", if (CHECK(err || retval, "test_run or",
...@@ -123,20 +123,20 @@ static void test_or(struct atomics *skel) ...@@ -123,20 +123,20 @@ static void test_or(struct atomics *skel)
ASSERT_EQ(skel->data->or_noreturn_value, 0x111ull << 32, "or_noreturn_value"); ASSERT_EQ(skel->data->or_noreturn_value, 0x111ull << 32, "or_noreturn_value");
cleanup: cleanup:
bpf_link__destroy(link); close(link_fd);
} }
static void test_xor(struct atomics *skel) static void test_xor(struct atomics *skel)
{ {
int err, prog_fd; int err, prog_fd;
__u32 duration = 0, retval; __u32 duration = 0, retval;
struct bpf_link *link; int link_fd;
link = bpf_program__attach(skel->progs.xor); link_fd = atomics__xor__attach(skel);
if (CHECK(IS_ERR(link), "attach(xor)", "err: %ld\n", PTR_ERR(link))) if (!ASSERT_GT(link_fd, 0, "attach(xor)"))
return; return;
prog_fd = bpf_program__fd(skel->progs.xor); prog_fd = skel->progs.xor.prog_fd;
err = bpf_prog_test_run(prog_fd, 1, NULL, 0, err = bpf_prog_test_run(prog_fd, 1, NULL, 0,
NULL, NULL, &retval, &duration); NULL, NULL, &retval, &duration);
if (CHECK(err || retval, "test_run xor", if (CHECK(err || retval, "test_run xor",
...@@ -151,20 +151,20 @@ static void test_xor(struct atomics *skel) ...@@ -151,20 +151,20 @@ static void test_xor(struct atomics *skel)
ASSERT_EQ(skel->data->xor_noreturn_value, 0x101ull << 32, "xor_nxoreturn_value"); ASSERT_EQ(skel->data->xor_noreturn_value, 0x101ull << 32, "xor_nxoreturn_value");
cleanup: cleanup:
bpf_link__destroy(link); close(link_fd);
} }
static void test_cmpxchg(struct atomics *skel) static void test_cmpxchg(struct atomics *skel)
{ {
int err, prog_fd; int err, prog_fd;
__u32 duration = 0, retval; __u32 duration = 0, retval;
struct bpf_link *link; int link_fd;
link = bpf_program__attach(skel->progs.cmpxchg); link_fd = atomics__cmpxchg__attach(skel);
if (CHECK(IS_ERR(link), "attach(cmpxchg)", "err: %ld\n", PTR_ERR(link))) if (!ASSERT_GT(link_fd, 0, "attach(cmpxchg)"))
return; return;
prog_fd = bpf_program__fd(skel->progs.cmpxchg); prog_fd = skel->progs.cmpxchg.prog_fd;
err = bpf_prog_test_run(prog_fd, 1, NULL, 0, err = bpf_prog_test_run(prog_fd, 1, NULL, 0,
NULL, NULL, &retval, &duration); NULL, NULL, &retval, &duration);
if (CHECK(err || retval, "test_run add", if (CHECK(err || retval, "test_run add",
...@@ -180,20 +180,20 @@ static void test_cmpxchg(struct atomics *skel) ...@@ -180,20 +180,20 @@ static void test_cmpxchg(struct atomics *skel)
ASSERT_EQ(skel->bss->cmpxchg32_result_succeed, 1, "cmpxchg_result_succeed"); ASSERT_EQ(skel->bss->cmpxchg32_result_succeed, 1, "cmpxchg_result_succeed");
cleanup: cleanup:
bpf_link__destroy(link); close(link_fd);
} }
static void test_xchg(struct atomics *skel) static void test_xchg(struct atomics *skel)
{ {
int err, prog_fd; int err, prog_fd;
__u32 duration = 0, retval; __u32 duration = 0, retval;
struct bpf_link *link; int link_fd;
link = bpf_program__attach(skel->progs.xchg); link_fd = atomics__xchg__attach(skel);
if (CHECK(IS_ERR(link), "attach(xchg)", "err: %ld\n", PTR_ERR(link))) if (!ASSERT_GT(link_fd, 0, "attach(xchg)"))
return; return;
prog_fd = bpf_program__fd(skel->progs.xchg); prog_fd = skel->progs.xchg.prog_fd;
err = bpf_prog_test_run(prog_fd, 1, NULL, 0, err = bpf_prog_test_run(prog_fd, 1, NULL, 0,
NULL, NULL, &retval, &duration); NULL, NULL, &retval, &duration);
if (CHECK(err || retval, "test_run add", if (CHECK(err || retval, "test_run add",
...@@ -207,7 +207,7 @@ static void test_xchg(struct atomics *skel) ...@@ -207,7 +207,7 @@ static void test_xchg(struct atomics *skel)
ASSERT_EQ(skel->bss->xchg32_result, 1, "xchg32_result"); ASSERT_EQ(skel->bss->xchg32_result, 1, "xchg32_result");
cleanup: cleanup:
bpf_link__destroy(link); close(link_fd);
} }
void test_atomics(void) void test_atomics(void)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册