xref: /aosp_15_r20/external/strace/bpf_attr.h (revision cf84ac9a129d8ea9952db616b4e9b904c4bdde56)
1*cf84ac9aSAndroid Build Coastguard Worker /*
2*cf84ac9aSAndroid Build Coastguard Worker  * Copyright (c) 2015-2018 Dmitry V. Levin <[email protected]>
3*cf84ac9aSAndroid Build Coastguard Worker  * All rights reserved.
4*cf84ac9aSAndroid Build Coastguard Worker  *
5*cf84ac9aSAndroid Build Coastguard Worker  * Redistribution and use in source and binary forms, with or without
6*cf84ac9aSAndroid Build Coastguard Worker  * modification, are permitted provided that the following conditions
7*cf84ac9aSAndroid Build Coastguard Worker  * are met:
8*cf84ac9aSAndroid Build Coastguard Worker  * 1. Redistributions of source code must retain the above copyright
9*cf84ac9aSAndroid Build Coastguard Worker  *    notice, this list of conditions and the following disclaimer.
10*cf84ac9aSAndroid Build Coastguard Worker  * 2. Redistributions in binary form must reproduce the above copyright
11*cf84ac9aSAndroid Build Coastguard Worker  *    notice, this list of conditions and the following disclaimer in the
12*cf84ac9aSAndroid Build Coastguard Worker  *    documentation and/or other materials provided with the distribution.
13*cf84ac9aSAndroid Build Coastguard Worker  * 3. The name of the author may not be used to endorse or promote products
14*cf84ac9aSAndroid Build Coastguard Worker  *    derived from this software without specific prior written permission.
15*cf84ac9aSAndroid Build Coastguard Worker  *
16*cf84ac9aSAndroid Build Coastguard Worker  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
17*cf84ac9aSAndroid Build Coastguard Worker  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
18*cf84ac9aSAndroid Build Coastguard Worker  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
19*cf84ac9aSAndroid Build Coastguard Worker  * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
20*cf84ac9aSAndroid Build Coastguard Worker  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
21*cf84ac9aSAndroid Build Coastguard Worker  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
22*cf84ac9aSAndroid Build Coastguard Worker  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
23*cf84ac9aSAndroid Build Coastguard Worker  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24*cf84ac9aSAndroid Build Coastguard Worker  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
25*cf84ac9aSAndroid Build Coastguard Worker  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26*cf84ac9aSAndroid Build Coastguard Worker  */
27*cf84ac9aSAndroid Build Coastguard Worker 
28*cf84ac9aSAndroid Build Coastguard Worker #ifndef STRACE_BPF_ATTR_H
29*cf84ac9aSAndroid Build Coastguard Worker #define STRACE_BPF_ATTR_H
30*cf84ac9aSAndroid Build Coastguard Worker 
31*cf84ac9aSAndroid Build Coastguard Worker /*
32*cf84ac9aSAndroid Build Coastguard Worker  * The policy is that all fields of type uint64_t in this header file
33*cf84ac9aSAndroid Build Coastguard Worker  * must have ATTRIBUTE_ALIGNED(8).
34*cf84ac9aSAndroid Build Coastguard Worker  *
35*cf84ac9aSAndroid Build Coastguard Worker  * This should not cause any contradictions with <linux/bpf.h>
36*cf84ac9aSAndroid Build Coastguard Worker  * unless the latter is buggy.
37*cf84ac9aSAndroid Build Coastguard Worker  *
38*cf84ac9aSAndroid Build Coastguard Worker  * By word "buggy" I mean containing such changes as Linux kernel commit
39*cf84ac9aSAndroid Build Coastguard Worker  * v4.16-rc1~123^2~109^2~5^2~4.
40*cf84ac9aSAndroid Build Coastguard Worker  */
41*cf84ac9aSAndroid Build Coastguard Worker 
42*cf84ac9aSAndroid Build Coastguard Worker #ifndef BPF_OBJ_NAME_LEN
43*cf84ac9aSAndroid Build Coastguard Worker # define BPF_OBJ_NAME_LEN 16U
44*cf84ac9aSAndroid Build Coastguard Worker #else
45*cf84ac9aSAndroid Build Coastguard Worker # if BPF_OBJ_NAME_LEN != 16U
46*cf84ac9aSAndroid Build Coastguard Worker #  error "Unexpected value of BPF_OBJ_NAME_LEN"
47*cf84ac9aSAndroid Build Coastguard Worker # endif
48*cf84ac9aSAndroid Build Coastguard Worker #endif
49*cf84ac9aSAndroid Build Coastguard Worker 
50*cf84ac9aSAndroid Build Coastguard Worker #ifndef BPF_TAG_SIZE
51*cf84ac9aSAndroid Build Coastguard Worker # define BPF_TAG_SIZE 8
52*cf84ac9aSAndroid Build Coastguard Worker #else
53*cf84ac9aSAndroid Build Coastguard Worker # if BPF_TAG_SIZE != 8
54*cf84ac9aSAndroid Build Coastguard Worker #  error "Unexpected value of BPF_TAG_SIZE"
55*cf84ac9aSAndroid Build Coastguard Worker # endif
56*cf84ac9aSAndroid Build Coastguard Worker #endif
57*cf84ac9aSAndroid Build Coastguard Worker 
58*cf84ac9aSAndroid Build Coastguard Worker struct BPF_MAP_CREATE_struct {
59*cf84ac9aSAndroid Build Coastguard Worker 	uint32_t map_type;
60*cf84ac9aSAndroid Build Coastguard Worker 	uint32_t key_size;
61*cf84ac9aSAndroid Build Coastguard Worker 	uint32_t value_size;
62*cf84ac9aSAndroid Build Coastguard Worker 	uint32_t max_entries;
63*cf84ac9aSAndroid Build Coastguard Worker 	uint32_t map_flags;
64*cf84ac9aSAndroid Build Coastguard Worker 	uint32_t inner_map_fd;
65*cf84ac9aSAndroid Build Coastguard Worker 	uint32_t numa_node;
66*cf84ac9aSAndroid Build Coastguard Worker 	char     map_name[BPF_OBJ_NAME_LEN];
67*cf84ac9aSAndroid Build Coastguard Worker 	uint32_t map_ifindex;
68*cf84ac9aSAndroid Build Coastguard Worker };
69*cf84ac9aSAndroid Build Coastguard Worker 
70*cf84ac9aSAndroid Build Coastguard Worker #define BPF_MAP_CREATE_struct_size \
71*cf84ac9aSAndroid Build Coastguard Worker 	sizeof(struct BPF_MAP_CREATE_struct)
72*cf84ac9aSAndroid Build Coastguard Worker #define expected_BPF_MAP_CREATE_struct_size 48
73*cf84ac9aSAndroid Build Coastguard Worker 
74*cf84ac9aSAndroid Build Coastguard Worker struct BPF_MAP_LOOKUP_ELEM_struct {
75*cf84ac9aSAndroid Build Coastguard Worker 	uint32_t map_fd;
76*cf84ac9aSAndroid Build Coastguard Worker 	uint64_t ATTRIBUTE_ALIGNED(8) key;
77*cf84ac9aSAndroid Build Coastguard Worker 	uint64_t ATTRIBUTE_ALIGNED(8) value;
78*cf84ac9aSAndroid Build Coastguard Worker };
79*cf84ac9aSAndroid Build Coastguard Worker 
80*cf84ac9aSAndroid Build Coastguard Worker #define BPF_MAP_LOOKUP_ELEM_struct_size \
81*cf84ac9aSAndroid Build Coastguard Worker 	sizeof(struct BPF_MAP_LOOKUP_ELEM_struct)
82*cf84ac9aSAndroid Build Coastguard Worker #define expected_BPF_MAP_LOOKUP_ELEM_struct_size 24
83*cf84ac9aSAndroid Build Coastguard Worker 
84*cf84ac9aSAndroid Build Coastguard Worker struct BPF_MAP_UPDATE_ELEM_struct {
85*cf84ac9aSAndroid Build Coastguard Worker 	uint32_t map_fd;
86*cf84ac9aSAndroid Build Coastguard Worker 	uint64_t ATTRIBUTE_ALIGNED(8) key;
87*cf84ac9aSAndroid Build Coastguard Worker 	uint64_t ATTRIBUTE_ALIGNED(8) value;
88*cf84ac9aSAndroid Build Coastguard Worker 	uint64_t ATTRIBUTE_ALIGNED(8) flags;
89*cf84ac9aSAndroid Build Coastguard Worker };
90*cf84ac9aSAndroid Build Coastguard Worker 
91*cf84ac9aSAndroid Build Coastguard Worker #define BPF_MAP_UPDATE_ELEM_struct_size \
92*cf84ac9aSAndroid Build Coastguard Worker 	sizeof(struct BPF_MAP_UPDATE_ELEM_struct)
93*cf84ac9aSAndroid Build Coastguard Worker #define expected_BPF_MAP_UPDATE_ELEM_struct_size 32
94*cf84ac9aSAndroid Build Coastguard Worker 
95*cf84ac9aSAndroid Build Coastguard Worker struct BPF_MAP_DELETE_ELEM_struct {
96*cf84ac9aSAndroid Build Coastguard Worker 	uint32_t map_fd;
97*cf84ac9aSAndroid Build Coastguard Worker 	uint64_t ATTRIBUTE_ALIGNED(8) key;
98*cf84ac9aSAndroid Build Coastguard Worker };
99*cf84ac9aSAndroid Build Coastguard Worker 
100*cf84ac9aSAndroid Build Coastguard Worker #define BPF_MAP_DELETE_ELEM_struct_size \
101*cf84ac9aSAndroid Build Coastguard Worker 	sizeof(struct BPF_MAP_DELETE_ELEM_struct)
102*cf84ac9aSAndroid Build Coastguard Worker #define expected_BPF_MAP_DELETE_ELEM_struct_size 16
103*cf84ac9aSAndroid Build Coastguard Worker 
104*cf84ac9aSAndroid Build Coastguard Worker struct BPF_MAP_GET_NEXT_KEY_struct {
105*cf84ac9aSAndroid Build Coastguard Worker 	uint32_t map_fd;
106*cf84ac9aSAndroid Build Coastguard Worker 	uint64_t ATTRIBUTE_ALIGNED(8) key;
107*cf84ac9aSAndroid Build Coastguard Worker 	uint64_t ATTRIBUTE_ALIGNED(8) next_key;
108*cf84ac9aSAndroid Build Coastguard Worker };
109*cf84ac9aSAndroid Build Coastguard Worker 
110*cf84ac9aSAndroid Build Coastguard Worker #define BPF_MAP_GET_NEXT_KEY_struct_size \
111*cf84ac9aSAndroid Build Coastguard Worker 	sizeof(struct BPF_MAP_GET_NEXT_KEY_struct)
112*cf84ac9aSAndroid Build Coastguard Worker #define expected_BPF_MAP_GET_NEXT_KEY_struct_size 24
113*cf84ac9aSAndroid Build Coastguard Worker 
114*cf84ac9aSAndroid Build Coastguard Worker struct BPF_PROG_LOAD_struct {
115*cf84ac9aSAndroid Build Coastguard Worker 	uint32_t prog_type;
116*cf84ac9aSAndroid Build Coastguard Worker 	uint32_t insn_cnt;
117*cf84ac9aSAndroid Build Coastguard Worker 	uint64_t ATTRIBUTE_ALIGNED(8) insns;
118*cf84ac9aSAndroid Build Coastguard Worker 	uint64_t ATTRIBUTE_ALIGNED(8) license;
119*cf84ac9aSAndroid Build Coastguard Worker 	uint32_t log_level;
120*cf84ac9aSAndroid Build Coastguard Worker 	uint32_t log_size;
121*cf84ac9aSAndroid Build Coastguard Worker 	uint64_t ATTRIBUTE_ALIGNED(8) log_buf;
122*cf84ac9aSAndroid Build Coastguard Worker 	uint32_t kern_version;
123*cf84ac9aSAndroid Build Coastguard Worker 	uint32_t prog_flags;
124*cf84ac9aSAndroid Build Coastguard Worker 	char     prog_name[BPF_OBJ_NAME_LEN];
125*cf84ac9aSAndroid Build Coastguard Worker 	uint32_t prog_ifindex;
126*cf84ac9aSAndroid Build Coastguard Worker 	uint32_t expected_attach_type;
127*cf84ac9aSAndroid Build Coastguard Worker };
128*cf84ac9aSAndroid Build Coastguard Worker 
129*cf84ac9aSAndroid Build Coastguard Worker #define BPF_PROG_LOAD_struct_size \
130*cf84ac9aSAndroid Build Coastguard Worker 	offsetofend(struct BPF_PROG_LOAD_struct, expected_attach_type)
131*cf84ac9aSAndroid Build Coastguard Worker #define expected_BPF_PROG_LOAD_struct_size 72
132*cf84ac9aSAndroid Build Coastguard Worker 
133*cf84ac9aSAndroid Build Coastguard Worker struct BPF_OBJ_PIN_struct {
134*cf84ac9aSAndroid Build Coastguard Worker 	uint64_t ATTRIBUTE_ALIGNED(8) pathname;
135*cf84ac9aSAndroid Build Coastguard Worker 	uint32_t bpf_fd;
136*cf84ac9aSAndroid Build Coastguard Worker 	uint32_t file_flags;
137*cf84ac9aSAndroid Build Coastguard Worker };
138*cf84ac9aSAndroid Build Coastguard Worker 
139*cf84ac9aSAndroid Build Coastguard Worker #define BPF_OBJ_PIN_struct_size \
140*cf84ac9aSAndroid Build Coastguard Worker 	sizeof(struct BPF_OBJ_PIN_struct)
141*cf84ac9aSAndroid Build Coastguard Worker #define expected_BPF_OBJ_PIN_struct_size 16
142*cf84ac9aSAndroid Build Coastguard Worker 
143*cf84ac9aSAndroid Build Coastguard Worker #define BPF_OBJ_GET_struct BPF_OBJ_PIN_struct
144*cf84ac9aSAndroid Build Coastguard Worker #define BPF_OBJ_GET_struct_size BPF_OBJ_PIN_struct_size
145*cf84ac9aSAndroid Build Coastguard Worker 
146*cf84ac9aSAndroid Build Coastguard Worker struct BPF_PROG_ATTACH_struct {
147*cf84ac9aSAndroid Build Coastguard Worker 	uint32_t target_fd;
148*cf84ac9aSAndroid Build Coastguard Worker 	uint32_t attach_bpf_fd;
149*cf84ac9aSAndroid Build Coastguard Worker 	uint32_t attach_type;
150*cf84ac9aSAndroid Build Coastguard Worker 	uint32_t attach_flags;
151*cf84ac9aSAndroid Build Coastguard Worker };
152*cf84ac9aSAndroid Build Coastguard Worker 
153*cf84ac9aSAndroid Build Coastguard Worker #define BPF_PROG_ATTACH_struct_size \
154*cf84ac9aSAndroid Build Coastguard Worker 	sizeof(struct BPF_PROG_ATTACH_struct)
155*cf84ac9aSAndroid Build Coastguard Worker #define expected_BPF_PROG_ATTACH_struct_size 16
156*cf84ac9aSAndroid Build Coastguard Worker 
157*cf84ac9aSAndroid Build Coastguard Worker struct BPF_PROG_DETACH_struct {
158*cf84ac9aSAndroid Build Coastguard Worker 	uint32_t target_fd;
159*cf84ac9aSAndroid Build Coastguard Worker 	uint32_t dummy;
160*cf84ac9aSAndroid Build Coastguard Worker 	uint32_t attach_type;
161*cf84ac9aSAndroid Build Coastguard Worker };
162*cf84ac9aSAndroid Build Coastguard Worker 
163*cf84ac9aSAndroid Build Coastguard Worker #define BPF_PROG_DETACH_struct_size \
164*cf84ac9aSAndroid Build Coastguard Worker 	sizeof(struct BPF_PROG_DETACH_struct)
165*cf84ac9aSAndroid Build Coastguard Worker #define expected_BPF_PROG_DETACH_struct_size 12
166*cf84ac9aSAndroid Build Coastguard Worker 
167*cf84ac9aSAndroid Build Coastguard Worker struct BPF_PROG_TEST_RUN_struct /* test */ {
168*cf84ac9aSAndroid Build Coastguard Worker 	uint32_t prog_fd;
169*cf84ac9aSAndroid Build Coastguard Worker 	uint32_t retval;
170*cf84ac9aSAndroid Build Coastguard Worker 	uint32_t data_size_in;
171*cf84ac9aSAndroid Build Coastguard Worker 	uint32_t data_size_out;
172*cf84ac9aSAndroid Build Coastguard Worker 	uint64_t ATTRIBUTE_ALIGNED(8) data_in;
173*cf84ac9aSAndroid Build Coastguard Worker 	uint64_t ATTRIBUTE_ALIGNED(8) data_out;
174*cf84ac9aSAndroid Build Coastguard Worker 	uint32_t repeat;
175*cf84ac9aSAndroid Build Coastguard Worker 	uint32_t duration;
176*cf84ac9aSAndroid Build Coastguard Worker };
177*cf84ac9aSAndroid Build Coastguard Worker 
178*cf84ac9aSAndroid Build Coastguard Worker #define BPF_PROG_TEST_RUN_struct_size \
179*cf84ac9aSAndroid Build Coastguard Worker 	sizeof(struct BPF_PROG_TEST_RUN_struct)
180*cf84ac9aSAndroid Build Coastguard Worker #define expected_BPF_PROG_TEST_RUN_struct_size 40
181*cf84ac9aSAndroid Build Coastguard Worker 
182*cf84ac9aSAndroid Build Coastguard Worker struct BPF_PROG_GET_NEXT_ID_struct {
183*cf84ac9aSAndroid Build Coastguard Worker 	uint32_t start_id;
184*cf84ac9aSAndroid Build Coastguard Worker 	uint32_t next_id;
185*cf84ac9aSAndroid Build Coastguard Worker 	uint32_t open_flags;
186*cf84ac9aSAndroid Build Coastguard Worker };
187*cf84ac9aSAndroid Build Coastguard Worker 
188*cf84ac9aSAndroid Build Coastguard Worker #define BPF_PROG_GET_NEXT_ID_struct_size \
189*cf84ac9aSAndroid Build Coastguard Worker 	sizeof(struct BPF_PROG_GET_NEXT_ID_struct)
190*cf84ac9aSAndroid Build Coastguard Worker #define expected_BPF_PROG_GET_NEXT_ID_struct_size 12
191*cf84ac9aSAndroid Build Coastguard Worker 
192*cf84ac9aSAndroid Build Coastguard Worker #define BPF_MAP_GET_NEXT_ID_struct BPF_PROG_GET_NEXT_ID_struct
193*cf84ac9aSAndroid Build Coastguard Worker #define BPF_MAP_GET_NEXT_ID_struct_size BPF_PROG_GET_NEXT_ID_struct_size
194*cf84ac9aSAndroid Build Coastguard Worker 
195*cf84ac9aSAndroid Build Coastguard Worker struct BPF_PROG_GET_FD_BY_ID_struct {
196*cf84ac9aSAndroid Build Coastguard Worker 	uint32_t prog_id;
197*cf84ac9aSAndroid Build Coastguard Worker 	uint32_t next_id;
198*cf84ac9aSAndroid Build Coastguard Worker 	uint32_t open_flags;
199*cf84ac9aSAndroid Build Coastguard Worker };
200*cf84ac9aSAndroid Build Coastguard Worker 
201*cf84ac9aSAndroid Build Coastguard Worker #define BPF_PROG_GET_FD_BY_ID_struct_size \
202*cf84ac9aSAndroid Build Coastguard Worker 	sizeof(struct BPF_PROG_GET_FD_BY_ID_struct)
203*cf84ac9aSAndroid Build Coastguard Worker #define expected_BPF_PROG_GET_FD_BY_ID_struct_size 12
204*cf84ac9aSAndroid Build Coastguard Worker 
205*cf84ac9aSAndroid Build Coastguard Worker struct BPF_MAP_GET_FD_BY_ID_struct {
206*cf84ac9aSAndroid Build Coastguard Worker 	uint32_t map_id;
207*cf84ac9aSAndroid Build Coastguard Worker 	uint32_t next_id;
208*cf84ac9aSAndroid Build Coastguard Worker 	uint32_t open_flags;
209*cf84ac9aSAndroid Build Coastguard Worker };
210*cf84ac9aSAndroid Build Coastguard Worker 
211*cf84ac9aSAndroid Build Coastguard Worker #define BPF_MAP_GET_FD_BY_ID_struct_size \
212*cf84ac9aSAndroid Build Coastguard Worker 	sizeof(struct BPF_MAP_GET_FD_BY_ID_struct)
213*cf84ac9aSAndroid Build Coastguard Worker #define expected_BPF_MAP_GET_FD_BY_ID_struct_size 12
214*cf84ac9aSAndroid Build Coastguard Worker 
215*cf84ac9aSAndroid Build Coastguard Worker struct BPF_OBJ_GET_INFO_BY_FD_struct /* info */ {
216*cf84ac9aSAndroid Build Coastguard Worker 	uint32_t bpf_fd;
217*cf84ac9aSAndroid Build Coastguard Worker 	uint32_t info_len;
218*cf84ac9aSAndroid Build Coastguard Worker 	uint64_t ATTRIBUTE_ALIGNED(8) info;
219*cf84ac9aSAndroid Build Coastguard Worker };
220*cf84ac9aSAndroid Build Coastguard Worker 
221*cf84ac9aSAndroid Build Coastguard Worker #define BPF_OBJ_GET_INFO_BY_FD_struct_size \
222*cf84ac9aSAndroid Build Coastguard Worker 	sizeof(struct BPF_OBJ_GET_INFO_BY_FD_struct)
223*cf84ac9aSAndroid Build Coastguard Worker #define expected_BPF_OBJ_GET_INFO_BY_FD_struct_size 16
224*cf84ac9aSAndroid Build Coastguard Worker 
225*cf84ac9aSAndroid Build Coastguard Worker struct BPF_PROG_QUERY_struct /* query */ {
226*cf84ac9aSAndroid Build Coastguard Worker 	uint32_t target_fd;
227*cf84ac9aSAndroid Build Coastguard Worker 	uint32_t attach_type;
228*cf84ac9aSAndroid Build Coastguard Worker 	uint32_t query_flags;
229*cf84ac9aSAndroid Build Coastguard Worker 	uint32_t attach_flags;
230*cf84ac9aSAndroid Build Coastguard Worker 	uint64_t ATTRIBUTE_ALIGNED(8) prog_ids;
231*cf84ac9aSAndroid Build Coastguard Worker 	uint32_t prog_cnt;
232*cf84ac9aSAndroid Build Coastguard Worker };
233*cf84ac9aSAndroid Build Coastguard Worker 
234*cf84ac9aSAndroid Build Coastguard Worker #define BPF_PROG_QUERY_struct_size \
235*cf84ac9aSAndroid Build Coastguard Worker 	offsetofend(struct BPF_PROG_QUERY_struct, prog_cnt)
236*cf84ac9aSAndroid Build Coastguard Worker #define expected_BPF_PROG_QUERY_struct_size 28
237*cf84ac9aSAndroid Build Coastguard Worker 
238*cf84ac9aSAndroid Build Coastguard Worker struct BPF_RAW_TRACEPOINT_OPEN_struct /* raw_tracepoint */ {
239*cf84ac9aSAndroid Build Coastguard Worker 	uint64_t ATTRIBUTE_ALIGNED(8) name;
240*cf84ac9aSAndroid Build Coastguard Worker 	uint32_t prog_fd;
241*cf84ac9aSAndroid Build Coastguard Worker };
242*cf84ac9aSAndroid Build Coastguard Worker 
243*cf84ac9aSAndroid Build Coastguard Worker #define BPF_RAW_TRACEPOINT_OPEN_struct_size \
244*cf84ac9aSAndroid Build Coastguard Worker 	offsetofend(struct BPF_RAW_TRACEPOINT_OPEN_struct, prog_fd)
245*cf84ac9aSAndroid Build Coastguard Worker #define expected_BPF_RAW_TRACEPOINT_OPEN_struct_size 12
246*cf84ac9aSAndroid Build Coastguard Worker 
247*cf84ac9aSAndroid Build Coastguard Worker struct bpf_map_info_struct {
248*cf84ac9aSAndroid Build Coastguard Worker 	uint32_t type;
249*cf84ac9aSAndroid Build Coastguard Worker 	uint32_t id;
250*cf84ac9aSAndroid Build Coastguard Worker 	uint32_t key_size;
251*cf84ac9aSAndroid Build Coastguard Worker 	uint32_t value_size;
252*cf84ac9aSAndroid Build Coastguard Worker 	uint32_t max_entries;
253*cf84ac9aSAndroid Build Coastguard Worker 	uint32_t map_flags;
254*cf84ac9aSAndroid Build Coastguard Worker 	char     name[BPF_OBJ_NAME_LEN];
255*cf84ac9aSAndroid Build Coastguard Worker 	uint32_t ifindex;
256*cf84ac9aSAndroid Build Coastguard Worker 	/*
257*cf84ac9aSAndroid Build Coastguard Worker 	 * The kernel UAPI is broken by Linux commit
258*cf84ac9aSAndroid Build Coastguard Worker 	 * v4.16-rc1~123^2~109^2~5^2~4 .
259*cf84ac9aSAndroid Build Coastguard Worker 	 */
260*cf84ac9aSAndroid Build Coastguard Worker 	uint64_t ATTRIBUTE_ALIGNED(8) netns_dev; /* skip check */
261*cf84ac9aSAndroid Build Coastguard Worker 	uint64_t ATTRIBUTE_ALIGNED(8) netns_ino; /* skip check */
262*cf84ac9aSAndroid Build Coastguard Worker };
263*cf84ac9aSAndroid Build Coastguard Worker 
264*cf84ac9aSAndroid Build Coastguard Worker #define bpf_map_info_struct_size \
265*cf84ac9aSAndroid Build Coastguard Worker 	sizeof(struct bpf_map_info_struct)
266*cf84ac9aSAndroid Build Coastguard Worker #define expected_bpf_map_info_struct_size 64
267*cf84ac9aSAndroid Build Coastguard Worker 
268*cf84ac9aSAndroid Build Coastguard Worker struct bpf_prog_info_struct {
269*cf84ac9aSAndroid Build Coastguard Worker 	uint32_t type;
270*cf84ac9aSAndroid Build Coastguard Worker 	uint32_t id;
271*cf84ac9aSAndroid Build Coastguard Worker 	uint8_t  tag[BPF_TAG_SIZE];
272*cf84ac9aSAndroid Build Coastguard Worker 	uint32_t jited_prog_len;
273*cf84ac9aSAndroid Build Coastguard Worker 	uint32_t xlated_prog_len;
274*cf84ac9aSAndroid Build Coastguard Worker 	uint64_t ATTRIBUTE_ALIGNED(8) jited_prog_insns;
275*cf84ac9aSAndroid Build Coastguard Worker 	uint64_t ATTRIBUTE_ALIGNED(8) xlated_prog_insns;
276*cf84ac9aSAndroid Build Coastguard Worker 	uint64_t ATTRIBUTE_ALIGNED(8) load_time;
277*cf84ac9aSAndroid Build Coastguard Worker 	uint32_t created_by_uid;
278*cf84ac9aSAndroid Build Coastguard Worker 	uint32_t nr_map_ids;
279*cf84ac9aSAndroid Build Coastguard Worker 	uint64_t ATTRIBUTE_ALIGNED(8) map_ids;
280*cf84ac9aSAndroid Build Coastguard Worker 	char     name[BPF_OBJ_NAME_LEN];
281*cf84ac9aSAndroid Build Coastguard Worker 	uint32_t ifindex;
282*cf84ac9aSAndroid Build Coastguard Worker 	/*
283*cf84ac9aSAndroid Build Coastguard Worker 	 * The kernel UAPI is broken by Linux commit
284*cf84ac9aSAndroid Build Coastguard Worker 	 * v4.16-rc1~123^2~227^2~5^2~2 .
285*cf84ac9aSAndroid Build Coastguard Worker 	 */
286*cf84ac9aSAndroid Build Coastguard Worker 	uint64_t ATTRIBUTE_ALIGNED(8) netns_dev; /* skip check */
287*cf84ac9aSAndroid Build Coastguard Worker 	uint64_t ATTRIBUTE_ALIGNED(8) netns_ino; /* skip check */
288*cf84ac9aSAndroid Build Coastguard Worker };
289*cf84ac9aSAndroid Build Coastguard Worker 
290*cf84ac9aSAndroid Build Coastguard Worker #define bpf_prog_info_struct_size \
291*cf84ac9aSAndroid Build Coastguard Worker 	sizeof(struct bpf_prog_info_struct)
292*cf84ac9aSAndroid Build Coastguard Worker #define expected_bpf_prog_info_struct_size 104
293*cf84ac9aSAndroid Build Coastguard Worker 
294*cf84ac9aSAndroid Build Coastguard Worker #endif /* !STRACE_BPF_ATTR_H */
295