| /* 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_restart_tracing(void); | |
| int timerlat_bpf_get_hist_value(int key, | |
| long long *value_irq, | |
| long long *value_thread, | |
| long long *value_user); | |
| int timerlat_bpf_get_summary_value(enum summary_field key, | |
| long long *value_irq, | |
| long long *value_thread, | |
| long long *value_user); | |
| int timerlat_load_bpf_action_program(const char *program_path); | |
| 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_restart_tracing(void) { return -1; }; | |
| static inline int timerlat_bpf_get_hist_value(int key, | |
| long long *value_irq, | |
| long long *value_thread, | |
| long long *value_user) | |
| { | |
| 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) | |
| { | |
| return -1; | |
| } | |
| static inline int timerlat_load_bpf_action_program(const char *program_path) | |
| { | |
| return -1; | |
| } | |
| static inline int have_libbpf_support(void) { return 0; } | |
| #endif /* HAVE_BPF_SKEL */ | |
| #endif /* __bpf__ */ |