18c2ecf20Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0 28c2ecf20Sopenharmony_ci/* Copyright (c) 2019 Facebook */ 38c2ecf20Sopenharmony_ci 48c2ecf20Sopenharmony_ci#include <stdbool.h> 58c2ecf20Sopenharmony_ci#include <linux/bpf.h> 68c2ecf20Sopenharmony_ci#include <bpf/bpf_helpers.h> 78c2ecf20Sopenharmony_ci 88c2ecf20Sopenharmony_ci__u64 out__bpf_link_fops = -1; 98c2ecf20Sopenharmony_ci__u64 out__bpf_link_fops1 = -1; 108c2ecf20Sopenharmony_ci__u64 out__btf_size = -1; 118c2ecf20Sopenharmony_ci__u64 out__per_cpu_start = -1; 128c2ecf20Sopenharmony_ci 138c2ecf20Sopenharmony_ciextern const void bpf_link_fops __ksym; 148c2ecf20Sopenharmony_ciextern const void __start_BTF __ksym; 158c2ecf20Sopenharmony_ciextern const void __stop_BTF __ksym; 168c2ecf20Sopenharmony_ciextern const void __per_cpu_start __ksym; 178c2ecf20Sopenharmony_ci/* non-existing symbol, weak, default to zero */ 188c2ecf20Sopenharmony_ciextern const void bpf_link_fops1 __ksym __weak; 198c2ecf20Sopenharmony_ci 208c2ecf20Sopenharmony_ciSEC("raw_tp/sys_enter") 218c2ecf20Sopenharmony_ciint handler(const void *ctx) 228c2ecf20Sopenharmony_ci{ 238c2ecf20Sopenharmony_ci out__bpf_link_fops = (__u64)&bpf_link_fops; 248c2ecf20Sopenharmony_ci out__btf_size = (__u64)(&__stop_BTF - &__start_BTF); 258c2ecf20Sopenharmony_ci out__per_cpu_start = (__u64)&__per_cpu_start; 268c2ecf20Sopenharmony_ci 278c2ecf20Sopenharmony_ci out__bpf_link_fops1 = (__u64)&bpf_link_fops1; 288c2ecf20Sopenharmony_ci 298c2ecf20Sopenharmony_ci return 0; 308c2ecf20Sopenharmony_ci} 318c2ecf20Sopenharmony_ci 328c2ecf20Sopenharmony_cichar _license[] SEC("license") = "GPL"; 33