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