tools/testing/selftests/bpf/progs/struct_ops_module.c

Source file repositories/reference/linux-study-clean/tools/testing/selftests/bpf/progs/struct_ops_module.c

File Facts

System
Linux kernel
Corpus path
tools/testing/selftests/bpf/progs/struct_ops_module.c
Extension
.c
Size
1793 bytes
Lines
91
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

struct bpf_testmod_ops___v2 {
	int (*test_1)(void);
	void (*test_2)(int a, int b);
	int (*test_maybe_null)(int dummy, struct task_struct *task);
};

SEC(".struct_ops.link")
struct bpf_testmod_ops___v2 testmod_2 = {
	.test_1 = (void *)test_1,
	.test_2 = (void *)test_2_v2,
};

struct bpf_testmod_ops___zeroed {
	int (*test_1)(void);
	void (*test_2)(int a, int b);
	int (*test_maybe_null)(int dummy, struct task_struct *task);
	void (*zeroed_op)(int a, int b);
	int zeroed;
};

SEC("struct_ops/test_3")
int BPF_PROG(zeroed_op)
{
	return 1;
}

SEC(".struct_ops.link")
struct bpf_testmod_ops___zeroed testmod_zeroed = {
	.test_1 = (void *)test_1,
	.test_2 = (void *)test_2_v2,
	.zeroed_op = (void *)zeroed_op,
};

struct bpf_testmod_ops___incompatible {
	int (*test_1)(void);
	void (*test_2)(int *a);
	int data;
};

SEC(".struct_ops.link")
struct bpf_testmod_ops___incompatible testmod_incompatible = {
	.test_1 = (void *)test_1,
	.test_2 = (void *)test_2,
	.data = 3,
};

Annotation

Implementation Notes