/* SPDX-License-Identifier: GPL-2.0 */ #pragma once enum summary_field { SUMMARY_CURRENT, SUMMARY_MIN, SUMMARY_MAX, SUMMARY_COUNT, SUMMARY_SUM, SUMMARY_OVERFLOW, SUMMARY_FIELD_N }; #ifndef __bpf__ #ifdef HAVE_BPF_SKEL int timerlat_bpf_init(struct timerlat_params *params); int timerlat_bpf_attach(void); void timerlat_bpf_detach(void); void timerlat_bpf_destroy(void); int timerlat_bpf_wait(int timeout); int timerlat_bpf_get_hist_value(int key, long long *value_irq, long long *value_thread, long long *value_user, int cpus); int timerlat_bpf_get_summary_value(enum summary_field key, long long *value_irq, long long *value_thread, long long *value_user, int cpus); static inline int have_libbpf_support(void) { return 1; } #else static inline int timerlat_bpf_init(struct timerlat_params *params) { return -1; } static inline int timerlat_bpf_attach(void) { return -1; } static inline void timerlat_bpf_detach(void) { }; static inline void timerlat_bpf_destroy(void) { }; static inline int timerlat_bpf_wait(int timeout) { return -1; } static inline int timerlat_bpf_get_hist_value(int key, long long *value_irq, long long *value_thread, long long *value_user, int cpus) { return -1; } static inline int timerlat_bpf_get_summary_value(enum summary_field key, long long *value_irq, long long *value_thread, long long *value_user, int cpus) { return -1; } static inline int have_libbpf_support(void) { return 0; } #endif /* HAVE_BPF_SKEL */ #endif /* __bpf__ */