tools/testing/selftests/bpf/prog_tests/test_global_funcs.c

Source file repositories/reference/linux-study-clean/tools/testing/selftests/bpf/prog_tests/test_global_funcs.c

File Facts

System
Linux kernel
Corpus path
tools/testing/selftests/bpf/prog_tests/test_global_funcs.c
Extension
.c
Size
4825 bytes
Lines
165
Domain
Support Tooling And Documentation
Bucket
tools
Inferred role
Support Tooling And Documentation: implementation source
Status
source implementation candidate

Why This File Exists

Repository support layer: documentation, build tooling, samples, user-space helper tools, generated initramfs support, licenses, and validation utilities.

Dependency Surface

Detected Declarations

Annotated Snippet

if (strcmp(name, "subprog_ctx_tag") == 0) {
			/* int subprog_ctx_tag(void *ctx __arg_ctx) */
			if (!ASSERT_EQ(btf_vlen(proto_t), 1, "arg_cnt"))
				goto out;

			/* arg 0 is PTR -> STRUCT bpf_perf_event_data */
			check_ctx_arg_type(btf, &btf_params(proto_t)[0]);
		} else if (strcmp(name, "subprog_multi_ctx_tags") == 0) {
			/* int subprog_multi_ctx_tags(void *ctx1 __arg_ctx,
			 *			      struct my_struct *mem,
			 *			      void *ctx2 __arg_ctx)
			 */
			if (!ASSERT_EQ(btf_vlen(proto_t), 3, "arg_cnt"))
				goto out;

			/* arg 0 is PTR -> STRUCT bpf_perf_event_data */
			check_ctx_arg_type(btf, &btf_params(proto_t)[0]);
			/* arg 2 is PTR -> STRUCT bpf_perf_event_data */
			check_ctx_arg_type(btf, &btf_params(proto_t)[2]);
		} else {
			ASSERT_FAIL("unexpected subprog %s", name);
			goto out;
		}
	}

out:
	btf__free(btf);
	test_global_func_ctx_args__destroy(skel);
}

void test_test_global_funcs(void)
{
	RUN_TESTS(test_global_func1);
	RUN_TESTS(test_global_func2);
	RUN_TESTS(test_global_func3);
	RUN_TESTS(test_global_func4);
	RUN_TESTS(test_global_func5);
	RUN_TESTS(test_global_func6);
	RUN_TESTS(test_global_func7);
	RUN_TESTS(test_global_func8);
	RUN_TESTS(test_global_func9);
	RUN_TESTS(test_global_func10);
	RUN_TESTS(test_global_func11);
	RUN_TESTS(test_global_func12);
	RUN_TESTS(test_global_func13);
	RUN_TESTS(test_global_func14);
	RUN_TESTS(test_global_func15);
	RUN_TESTS(test_global_func16);
	RUN_TESTS(test_global_func17);
	RUN_TESTS(test_global_func_deep_stack);
	RUN_TESTS(test_global_func_ctx_args);

	if (test__start_subtest("ctx_arg_rewrite"))
		subtest_ctx_arg_rewrite();
}

Annotation

Implementation Notes