Merge tag 'powerpc-6.6-6' of git://git.kernel.org/pub/scm/linux/kernel/git/powerpc...
[platform/kernel/linux-starfive.git] / tools / testing / selftests / bpf / prog_tests / test_bpf_ma.c
1 // SPDX-License-Identifier: GPL-2.0
2 /* Copyright (C) 2023. Huawei Technologies Co., Ltd */
3 #define _GNU_SOURCE
4 #include <sched.h>
5 #include <pthread.h>
6 #include <stdbool.h>
7 #include <bpf/btf.h>
8 #include <test_progs.h>
9
10 #include "test_bpf_ma.skel.h"
11
12 void test_test_bpf_ma(void)
13 {
14         struct test_bpf_ma *skel;
15         struct btf *btf;
16         int i, err;
17
18         skel = test_bpf_ma__open();
19         if (!ASSERT_OK_PTR(skel, "open"))
20                 return;
21
22         btf = bpf_object__btf(skel->obj);
23         if (!ASSERT_OK_PTR(btf, "btf"))
24                 goto out;
25
26         for (i = 0; i < ARRAY_SIZE(skel->rodata->data_sizes); i++) {
27                 char name[32];
28                 int id;
29
30                 snprintf(name, sizeof(name), "bin_data_%u", skel->rodata->data_sizes[i]);
31                 id = btf__find_by_name_kind(btf, name, BTF_KIND_STRUCT);
32                 if (!ASSERT_GT(id, 0, "bin_data"))
33                         goto out;
34                 skel->rodata->data_btf_ids[i] = id;
35         }
36
37         err = test_bpf_ma__load(skel);
38         if (!ASSERT_OK(err, "load"))
39                 goto out;
40
41         err = test_bpf_ma__attach(skel);
42         if (!ASSERT_OK(err, "attach"))
43                 goto out;
44
45         skel->bss->pid = getpid();
46         usleep(1);
47         ASSERT_OK(skel->bss->err, "test error");
48 out:
49         test_bpf_ma__destroy(skel);
50 }