1/* SPDX-License-Identifier: GPL-2.0 */
2/* Copyright (c) 2020 Facebook */
3#ifndef _BPF_TESTMOD_H
4#define _BPF_TESTMOD_H
5
6#include <linux/types.h>
7
8struct task_struct;
9
10struct bpf_testmod_test_read_ctx {
11 char *buf;
12 loff_t off;
13 size_t len;
14};
15
16struct bpf_testmod_test_write_ctx {
17 char *buf;
18 loff_t off;
19 size_t len;
20};
21
22struct bpf_testmod_test_writable_ctx {
23 bool early_ret;
24 int val;
25};
26
27/* BPF iter that returns *value* *n* times in a row */
28struct bpf_iter_testmod_seq {
29 s64 value;
30 int cnt;
31};
32
33struct bpf_testmod_ops {
34 int (*test_1)(void);
35 void (*test_2)(int a, int b);
36 /* Used to test nullable arguments. */
37 int (*test_maybe_null)(int dummy, struct task_struct *task);
38
39 /* The following fields are used to test shadow copies. */
40 char onebyte;
41 struct {
42 int a;
43 int b;
44 } unsupported;
45 int data;
46
47 /* The following pointers are used to test the maps having multiple
48 * pages of trampolines.
49 */
50 int (*tramp_1)(int value);
51 int (*tramp_2)(int value);
52 int (*tramp_3)(int value);
53 int (*tramp_4)(int value);
54 int (*tramp_5)(int value);
55 int (*tramp_6)(int value);
56 int (*tramp_7)(int value);
57 int (*tramp_8)(int value);
58 int (*tramp_9)(int value);
59 int (*tramp_10)(int value);
60 int (*tramp_11)(int value);
61 int (*tramp_12)(int value);
62 int (*tramp_13)(int value);
63 int (*tramp_14)(int value);
64 int (*tramp_15)(int value);
65 int (*tramp_16)(int value);
66 int (*tramp_17)(int value);
67 int (*tramp_18)(int value);
68 int (*tramp_19)(int value);
69 int (*tramp_20)(int value);
70 int (*tramp_21)(int value);
71 int (*tramp_22)(int value);
72 int (*tramp_23)(int value);
73 int (*tramp_24)(int value);
74 int (*tramp_25)(int value);
75 int (*tramp_26)(int value);
76 int (*tramp_27)(int value);
77 int (*tramp_28)(int value);
78 int (*tramp_29)(int value);
79 int (*tramp_30)(int value);
80 int (*tramp_31)(int value);
81 int (*tramp_32)(int value);
82 int (*tramp_33)(int value);
83 int (*tramp_34)(int value);
84 int (*tramp_35)(int value);
85 int (*tramp_36)(int value);
86 int (*tramp_37)(int value);
87 int (*tramp_38)(int value);
88 int (*tramp_39)(int value);
89 int (*tramp_40)(int value);
90};
91
92struct bpf_testmod_ops2 {
93 int (*test_1)(void);
94};
95
96#endif /* _BPF_TESTMOD_H */
97

source code of linux/tools/testing/selftests/bpf/bpf_testmod/bpf_testmod.h