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