File Index
Files and directories
Sign in
FILE

test_struct_ops_id_ops_mapping.c

File preview with syntax highlighting.

linux-6.19.14/tools/testing/selftests/bpf/prog_tests/test_struct_ops_id_ops_mapping.c C
 1// SPDX-License-Identifier: GPL-2.0
 2
 3#include <test_progs.h>
 4#include "struct_ops_id_ops_mapping1.skel.h"
 5#include "struct_ops_id_ops_mapping2.skel.h"
 6
 7static void test_st_ops_id_ops_mapping(void)
 8{
 9	struct struct_ops_id_ops_mapping1 *skel1 = NULL;
10	struct struct_ops_id_ops_mapping2 *skel2 = NULL;
11	struct bpf_map_info info = {};
12	__u32 len = sizeof(info);
13	int err, pid, prog1_fd, prog2_fd;
14
15	skel1 = struct_ops_id_ops_mapping1__open_and_load();
16	if (!ASSERT_OK_PTR(skel1, "struct_ops_id_ops_mapping1__open"))
17		goto out;
18
19	skel2 = struct_ops_id_ops_mapping2__open_and_load();
20	if (!ASSERT_OK_PTR(skel2, "struct_ops_id_ops_mapping2__open"))
21		goto out;
22
23	err = bpf_map_get_info_by_fd(bpf_map__fd(skel1->maps.st_ops_map),
24				     &info, &len);
25	if (!ASSERT_OK(err, "bpf_map_get_info_by_fd"))
26		goto out;
27
28	skel1->bss->st_ops_id = info.id;
29
30	err = bpf_map_get_info_by_fd(bpf_map__fd(skel2->maps.st_ops_map),
31				     &info, &len);
32	if (!ASSERT_OK(err, "bpf_map_get_info_by_fd"))
33		goto out;
34
35	skel2->bss->st_ops_id = info.id;
36
37	err = struct_ops_id_ops_mapping1__attach(skel1);
38	if (!ASSERT_OK(err, "struct_ops_id_ops_mapping1__attach"))
39		goto out;
40
41	err = struct_ops_id_ops_mapping2__attach(skel2);
42	if (!ASSERT_OK(err, "struct_ops_id_ops_mapping2__attach"))
43		goto out;
44
45	/* run tracing prog that calls .test_1 and checks return */
46	pid = getpid();
47	skel1->bss->test_pid = pid;
48	skel2->bss->test_pid = pid;
49	sys_gettid();
50	skel1->bss->test_pid = 0;
51	skel2->bss->test_pid = 0;
52
53	/* run syscall_prog that calls .test_1 and checks return */
54	prog1_fd = bpf_program__fd(skel1->progs.syscall_prog);
55	err = bpf_prog_test_run_opts(prog1_fd, NULL);
56	ASSERT_OK(err, "bpf_prog_test_run_opts");
57
58	prog2_fd = bpf_program__fd(skel2->progs.syscall_prog);
59	err = bpf_prog_test_run_opts(prog2_fd, NULL);
60	ASSERT_OK(err, "bpf_prog_test_run_opts");
61
62	ASSERT_EQ(skel1->bss->test_err, 0, "skel1->bss->test_err");
63	ASSERT_EQ(skel2->bss->test_err, 0, "skel2->bss->test_err");
64
65out:
66	struct_ops_id_ops_mapping1__destroy(skel1);
67	struct_ops_id_ops_mapping2__destroy(skel2);
68}
69
70void test_struct_ops_id_ops_mapping(void)
71{
72	if (test__start_subtest("st_ops_id_ops_mapping"))
73		test_st_ops_id_ops_mapping();
74}
~/ Read-only file preview.