brintos

brintos / linux-shallow public Read only

0
0
Text · 1.4 KiB · dc7aab5 Raw
54 lines · c
1// SPDX-License-Identifier: GPL-2.02/* Copyright (c) 2019 Facebook */3 4#include <test_progs.h>5#include "test_ksyms.skel.h"6#include <sys/stat.h>7 8void test_ksyms(void)9{10	const char *btf_path = "/sys/kernel/btf/vmlinux";11	struct test_ksyms *skel;12	struct test_ksyms__data *data;13	__u64 link_fops_addr, per_cpu_start_addr;14	struct stat st;15	__u64 btf_size;16	int err;17 18	err = kallsyms_find("bpf_link_fops", &link_fops_addr);19	if (!ASSERT_NEQ(err, -EINVAL, "bpf_link_fops: kallsyms_fopen"))20		return;21	if (!ASSERT_NEQ(err, -ENOENT, "bpf_link_fops: ksym_find"))22		return;23 24	err = kallsyms_find("__per_cpu_start", &per_cpu_start_addr);25	if (!ASSERT_NEQ(err, -EINVAL, "__per_cpu_start: kallsyms_fopen"))26		return;27	if (!ASSERT_NEQ(err, -ENOENT, "__per_cpu_start: ksym_find"))28		return;29 30	if (!ASSERT_OK(stat(btf_path, &st), "stat_btf"))31		return;32	btf_size = st.st_size;33 34	skel = test_ksyms__open_and_load();35	if (!ASSERT_OK_PTR(skel, "test_ksyms__open_and_load"))36		return;37 38	err = test_ksyms__attach(skel);39	if (!ASSERT_OK(err, "test_ksyms__attach"))40		goto cleanup;41 42	/* trigger tracepoint */43	usleep(1);44 45	data = skel->data;46	ASSERT_EQ(data->out__bpf_link_fops, link_fops_addr, "bpf_link_fops");47	ASSERT_EQ(data->out__bpf_link_fops1, 0, "bpf_link_fops1");48	ASSERT_EQ(data->out__btf_size, btf_size, "btf_size");49	ASSERT_EQ(data->out__per_cpu_start, per_cpu_start_addr, "__per_cpu_start");50 51cleanup:52	test_ksyms__destroy(skel);53}54