xref: /openbmc/qemu/ebpf/ebpf.h (revision e88899fa)
1*e88899faSAndrew Melnychenko /*
2*e88899faSAndrew Melnychenko  * QEMU eBPF binary declaration routine.
3*e88899faSAndrew Melnychenko  *
4*e88899faSAndrew Melnychenko  * Developed by Daynix Computing LTD (http://www.daynix.com)
5*e88899faSAndrew Melnychenko  *
6*e88899faSAndrew Melnychenko  * Authors:
7*e88899faSAndrew Melnychenko  *  Andrew Melnychenko <andrew@daynix.com>
8*e88899faSAndrew Melnychenko  *
9*e88899faSAndrew Melnychenko  * SPDX-License-Identifier: GPL-2.0-or-later
10*e88899faSAndrew Melnychenko  */
11*e88899faSAndrew Melnychenko 
12*e88899faSAndrew Melnychenko #ifndef EBPF_H
13*e88899faSAndrew Melnychenko #define EBPF_H
14*e88899faSAndrew Melnychenko 
15*e88899faSAndrew Melnychenko 
16*e88899faSAndrew Melnychenko void ebpf_register_binary_data(int id, const void *data,
17*e88899faSAndrew Melnychenko                                size_t datalen);
18*e88899faSAndrew Melnychenko const void *ebpf_find_binary_by_id(int id, size_t *sz,
19*e88899faSAndrew Melnychenko                                    struct Error **errp);
20*e88899faSAndrew Melnychenko 
21*e88899faSAndrew Melnychenko #define ebpf_binary_init(id, fn)                                           \
22*e88899faSAndrew Melnychenko static void __attribute__((constructor)) ebpf_binary_init_ ## fn(void)     \
23*e88899faSAndrew Melnychenko {                                                                          \
24*e88899faSAndrew Melnychenko     size_t datalen = 0;                                                    \
25*e88899faSAndrew Melnychenko     const void *data = fn(&datalen);                                       \
26*e88899faSAndrew Melnychenko     ebpf_register_binary_data(id, data, datalen);                          \
27*e88899faSAndrew Melnychenko }
28*e88899faSAndrew Melnychenko 
29*e88899faSAndrew Melnychenko #endif /* EBPF_H */
30