| /* 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__ */ |