1 | // SPDX-License-Identifier: GPL-2.0 |
2 | /* Copyright (C) 2021. Huawei Technologies Co., Ltd */ |
3 | #include "vmlinux.h" |
4 | #include <bpf/bpf_helpers.h> |
5 | #include <bpf/bpf_tracing.h> |
6 | |
7 | char _license[] SEC("license" ) = "GPL" ; |
8 | |
9 | SEC("struct_ops/test_1" ) |
10 | int BPF_PROG(test_1, struct bpf_dummy_ops_state *state) |
11 | { |
12 | int ret; |
13 | |
14 | if (!state) |
15 | return 0xf2f3f4f5; |
16 | |
17 | ret = state->val; |
18 | state->val = 0x5a; |
19 | return ret; |
20 | } |
21 | |
22 | __u64 test_2_args[5]; |
23 | |
24 | SEC("struct_ops/test_2" ) |
25 | int BPF_PROG(test_2, struct bpf_dummy_ops_state *state, int a1, unsigned short a2, |
26 | char a3, unsigned long a4) |
27 | { |
28 | test_2_args[0] = (unsigned long)state; |
29 | test_2_args[1] = a1; |
30 | test_2_args[2] = a2; |
31 | test_2_args[3] = a3; |
32 | test_2_args[4] = a4; |
33 | return 0; |
34 | } |
35 | |
36 | SEC("struct_ops.s/test_sleepable" ) |
37 | int BPF_PROG(test_sleepable, struct bpf_dummy_ops_state *state) |
38 | { |
39 | return 0; |
40 | } |
41 | |
42 | SEC(".struct_ops" ) |
43 | struct bpf_dummy_ops dummy_1 = { |
44 | .test_1 = (void *)test_1, |
45 | .test_2 = (void *)test_2, |
46 | .test_sleepable = (void *)test_sleepable, |
47 | }; |
48 | |