brintos

brintos / linux-shallow public Read only

0
0
Text · 1.9 KiB · 0be8301 Raw
82 lines · c
1// SPDX-License-Identifier: GPL-2.02/* Copyright (c) 2021 Facebook */3#include <test_progs.h>4#include "syscall.skel.h"5 6struct args {7	__u64 log_buf;8	__u32 log_size;9	int max_entries;10	int map_fd;11	int prog_fd;12	int btf_fd;13};14 15static void test_syscall_load_prog(void)16{17	static char verifier_log[8192];18	struct args ctx = {19		.max_entries = 1024,20		.log_buf = (uintptr_t) verifier_log,21		.log_size = sizeof(verifier_log),22	};23	LIBBPF_OPTS(bpf_test_run_opts, tattr,24		.ctx_in = &ctx,25		.ctx_size_in = sizeof(ctx),26	);27	struct syscall *skel = NULL;28	__u64 key = 12, value = 0;29	int err, prog_fd;30 31	skel = syscall__open_and_load();32	if (!ASSERT_OK_PTR(skel, "skel_load"))33		goto cleanup;34 35	prog_fd = bpf_program__fd(skel->progs.load_prog);36	err = bpf_prog_test_run_opts(prog_fd, &tattr);37	ASSERT_EQ(err, 0, "err");38	ASSERT_EQ(tattr.retval, 1, "retval");39	ASSERT_GT(ctx.map_fd, 0, "ctx.map_fd");40	ASSERT_GT(ctx.prog_fd, 0, "ctx.prog_fd");41	ASSERT_OK(memcmp(verifier_log, "processed", sizeof("processed") - 1),42		  "verifier_log");43 44	err = bpf_map_lookup_elem(ctx.map_fd, &key, &value);45	ASSERT_EQ(err, 0, "map_lookup");46	ASSERT_EQ(value, 34, "map lookup value");47cleanup:48	syscall__destroy(skel);49	if (ctx.prog_fd > 0)50		close(ctx.prog_fd);51	if (ctx.map_fd > 0)52		close(ctx.map_fd);53	if (ctx.btf_fd > 0)54		close(ctx.btf_fd);55}56 57static void test_syscall_update_outer_map(void)58{59	LIBBPF_OPTS(bpf_test_run_opts, opts);60	struct syscall *skel;61	int err, prog_fd;62 63	skel = syscall__open_and_load();64	if (!ASSERT_OK_PTR(skel, "skel_load"))65		goto cleanup;66 67	prog_fd = bpf_program__fd(skel->progs.update_outer_map);68	err = bpf_prog_test_run_opts(prog_fd, &opts);69	ASSERT_EQ(err, 0, "err");70	ASSERT_EQ(opts.retval, 1, "retval");71cleanup:72	syscall__destroy(skel);73}74 75void test_syscall(void)76{77	if (test__start_subtest("load_prog"))78		test_syscall_load_prog();79	if (test__start_subtest("update_outer_map"))80		test_syscall_update_outer_map();81}82