// SPDX-License-Identifier: GPL-2.0 /* Copyright (c) 2024 Meta Platforms, Inc. and affiliates. */ #include #include #include #include "../bpf_testmod/bpf_testmod.h" char _license[] SEC("license") = "GPL"; int test_1_result = 0; int test_2_result = 0; SEC("struct_ops/test_1") int BPF_PROG(test_1) { test_1_result = 0xdeadbeef; return 0; } SEC("struct_ops/test_2") void BPF_PROG(test_2, int a, int b) { test_2_result = a + b; } SEC("struct_ops/test_3") int BPF_PROG(test_3, int a, int b) { test_2_result = a + b + 3; return a + b + 3; } SEC(".struct_ops.link") struct bpf_testmod_ops testmod_1 = { .test_1 = (void *)test_1, .test_2 = (void *)test_2, .data = 0x1, }; SEC("struct_ops/test_2") void BPF_PROG(test_2_v2, int a, int b) { test_2_result = a * b; } 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, };