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
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.