1// SPDX-License-Identifier: GPL-2.0 2 3#include <linux/bpf.h> 4#include <bpf/bpf_helpers.h> 5#include <bpf/bpf_tracing.h> 6 7char _license[] SEC("license") = "GPL"; 8 9int test_1_result = 0; 10 11SEC("struct_ops/test_1") 12int BPF_PROG(test_1) 13{ 14 test_1_result = 42; 15 return 0; 16} 17 18SEC("struct_ops/test_1") 19int BPF_PROG(test_2) 20{ 21 return 0; 22} 23 24struct bpf_testmod_ops___v1 { 25 int (*test_1)(void); 26}; 27 28struct bpf_testmod_ops___v2 { 29 int (*test_1)(void); 30 int (*does_not_exist)(void); 31}; 32 33SEC(".struct_ops.link") 34struct bpf_testmod_ops___v1 testmod_1 = { 35 .test_1 = (void *)test_1 36}; 37 38SEC(".struct_ops.link") 39struct bpf_testmod_ops___v2 testmod_2 = { 40 .test_1 = (void *)test_1, 41 .does_not_exist = (void *)test_2 42}; 43 44SEC("?.struct_ops") 45struct bpf_testmod_ops___v1 optional_map = { 46 .test_1 = (void *)test_1, 47}; 48 49SEC("?.struct_ops.link") 50struct bpf_testmod_ops___v1 optional_map2 = { 51 .test_1 = (void *)test_1, 52}; 53